신규 블로그를 만들었습니다!
1. 배열이란?
인덱스를 이용해서 자료형이 같은 데이터를 관리 하는것으로, 자료형이 같을때 사용하면 효율적으로 이용할 수 있다.
배열을 만들때는 선언과 초기화를 따로 하는경우와 동시에 하는 방법이 있다.
1-1. 배열 선언과 초기화를 따로 하는 경우
자료형 배열명[배열의크기];
배열명[인덱스] = 값;
// 배열 선언
int score[4];
// 배열 초기화
score[0] = 90;
score[1] = 88;
score[2] = 70;
score[3] = 100;
1-2. 배열 선언과 초기화를 동시에 하는 경우
자료형 배열명[배열의크기] = {값, 값, 값, ... 값};
int score[4] = {90, 88, 70, 100};
2. 배열의 메모리 주소
배열의 각각의 데이터는 메모리 주소를 가지고 있다. 배열의 주소를 확인 하기 위해서는 '&'를 이용하면 알 수 있다.
int 자료형의 경우는 4byte의 크기를 갖는다. 그래서 처음 배열의 데이터 주소(index 0)와 그 다음의 데이터 주소(index1)의 차이는 4byte만큼 차이가 발생한다.
또 다른 자료형인 char를 살펴보면 1byte의 크기를 갖고 있기 때문에 int처럼 각 데이터간의 주소 차이는 1byte 만큼 차이가 발생한다.
반대로 배열의 주소를 가지고 값을 찾는 방법도 있다. 배열의 주소를 알기 위해서 &를 사용했지만, 반대로 주소를 가지고 그 주소안의 값을 알고 싶을때는 '*'를 사용 하면 된다.
3.코딩해보기
3-1. 배열의 선언과 초기화를 따로 하는 경우
#include <stdio.h>
int main(void) {
// 배열 선언
int score[4];
// 배열 초기화
score[0] = 30;
score[1] = 77;
score[2] = 90;
score[3] = 80;
// 반복문을 이용한 출력
for(int i=0; i<4; i++){
printf("score[%d] = %d\n", i, score[i]);
}
return 0;
}
3-2. 배열의 선언과 초기화를 동시에 하는 경우
#include <stdio.h>
int main(void) {
// 배열의 선언과 초기화를 동시에 하는 경우
char grade[4] = {'A', 'C', 'B', 'F' };
for(int i=0; i<4; i++){
printf("grade[%d] = %c\n", i, grade[i]);
}
return 0;
}
3-3. 메모리 주소 출력
#include <stdio.h>
int main(void) {
char grade[4] = {'A', 'C', 'B', 'F' };
for(int i=0; i<4; i++){
printf("grade[%d] = %c\n", i, grade[i]);
}
// 배열의 메모리 주소 출력
for (int i = 0; i<4; i++) {
printf("grade[%d]의 주소 = %x\n", i, &grade[i]);
}
return 0;
}
3-4. 주소를 이용해서 값 찾기
#include <stdio.h>
int main(void) {
int num[3] = { 2, 4, 5 };
// num 배열의 주소를 담은
int* numAddr[3] = { &num[0], &num[1], &num[2] };
for (int i = 0; i < 3; i++) {
printf("numAddr[%d] = %x\tvalue = %d\n", i, numAddr[i], *numAddr[i]);
}
return 0;
}
관련 글
2018/01/30 - [Language/C] - C언어 :: 함수(function, method)와 사용법 #11
2018/02/05 - [Language/C] - C언어 :: 포인터란(Pointer), 포인터 변수의 선언과 초기화 #13
'Language > C&C++' 카테고리의 다른 글
C언어 :: 포인터와 배열, 포인터를 이용한 문자열 #14 (0) | 2018.02.06 |
---|---|
C언어 :: 포인터란(Pointer), 포인터 변수의 선언과 초기화 #13 (0) | 2018.02.05 |
C언어 :: 함수(function, method)와 사용법 #11 (0) | 2018.01.30 |
C언어 :: 제어문(반복문 for while, 조건문 if switch) #10 (0) | 2018.01.29 |
C언어 :: 연산자와 연산자의 종류 #9 (0) | 2018.01.28 |
최근댓글