[열혈C프로그래밍] chapter 14. 2차원 배열

chapter 14

2차원 배열

2차원 배열의 이해와 활용

int arr[3][2]= { { 1 , 1 } , { 2 , 2 } , { 3 , 3 } };

printf("%ld \n", sizeof(arr)/sizeof(int)); // arr의 크기는 24. arr의 길이는 6.
printf("%ld \n", sizeof(arr)/sizeof(arr[0])); // arr의 행의 길이는 3.
printf("%ld \n", sizeof(arr[0])/sizeof(int)); // arr의 열의 길이는 2.

// arr[0] = {1,1};
// arr[1] = {2,2};
// arr[2] = {3,3};
// => 2차원 배열은 복수개의 1차원 배열을 element로 두고 있다고 할 수 있다.

2차원 배열 이름의 포인터형

이차원 배열 이름의 포인터형은 type* [열의 길이] 이다.

2차원 배열의 메모리 할당 구조

=> 배열이 아무리 2차원이지만 컴퓨터는 1차원 구조라 1차원적으로 메모리에 저장된다.

int arr[3][2] = { { 1 , 1 } , { 2 , 2 } , { 3 , 3 } }; 

=> 주소값은 임의로 지정하였다.

주소값 저장 된 변수 값 변수
0x1000 1 arr[0][0]
0x1004 1 arr[0][1]
0x1008 1 arr[1][0]
0x100C 1 arr[1][1]
0x1010 1 arr[2][0]
0x1014 1 arr[2][1]