본문 바로가기

C언어 자습/혼자공부하는 C언어 (저자 서현우)

2차원 배열

배열을 선언할 때, 필수적으로 필요한 것이 있다.

자료형과 변수(배열명), 그리고 배열 크기가 필요한데 그 이유가 있다.

배열은 연속된 메모리 주소값을 사용하기 때문에 사전에 설정된 주소값이 침범되지 않도록 잡아 두는 과정이 필요한 것이다.

 

값없이 선언만 하는 것도 가능하다는건, 값을 일부만 주는것도 가능하다는것.

이럴 때는 값이 없는 부분이 0으로 자동 초기화 된다.

만약 

int arr[5][5] = {{1},{2,3},{4,5,6},{7,8,9,0}};

라고 초기화 했다면

1 0 0 0 0
2 3 0 0 0
4 5 6 0 0
7 8 9 10 0
0 0 0 0 0

값을 주지 않은 상태에서는 이렇게 생긴 배열이 만들어 지는 것입니다.

중단점을 이용해서 메모리값이 어떻게 구성되었는지 살펴보면 위와 같습니다.

int 자료형은 4바이트크기를 사용하기 때문에 4칸씩 00 00 00 00 으로 초기화 되는 것을 볼 수 있죠.

초기화 순서는 index 0 부터 오름차순으로 결정 됩니다. 이는 행도 마찬가지이고, 열도 마찬가지입니다.

 

행의 값을 비워놓은 채로 초기화하게 되면 값의 수를 열의 수로 나눠서 몫+1만큼 행의 수를 결정합니다.

지금 열의 수는 4이고 값은 6개가 있으므로 (6/4) + 1 로 계산하면 2개의 행이 생길 것입니다.