[열혈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] |