보통 1차원 배열의 배열 이름은 포인터를 의미한다...
예를 들어  int arr[5];에서 arr은 int 형 포인터 변수이다...

그러면 2차원 배열에서의 배열 이름은 무엇을 의미할까??

2차원 배열의 배열 이름도 역시나 포인터를 의미하는데, 이 포인터의 포인터 타입은 무엇일까?
포인터 타입에는 이동에 대한 정보가 들어 있어야 한다.
예를 들어 int arr[2][4];에서 arr을 포인트 연산 arr++을 해보면 포인터 주소가 16씩 바뀌는 걸 알 수 있다.
그러므로 위의 2차원 배열 이름인 arr의 포인트 타입은 포인터 연산시 배열요소를 4칸씩 건너뛰는 int형 포인터 변수이다.

int (*arr)[4]  //  int arr[2][4] 이 둘은 포인터 타입이 같다...

참고로 int *arr[4]은 배열의 선언이다... 이것은 int형 포인터 변수 4개를 저장할 수 있는 배열을 선언하는 것이다.


+ Recent posts