본문 바로가기

윤성우의 C Programming

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

1차원 배열의 포인터형

1차원 배열의 이름은 배열의 첫 번째 요소의 주소를 나타내는 포인터로 사용될 수 있습니다. 예를 들어, int arr[10];이라는 배열이 있다면, arr은 int * 타입의 포인터로 취급될 수 있습니다. 이는 arr이 int 타입의 데이터를 가리키는 포인터임을 의미합니다.

int arr[10];
int *p = arr; // 배열 이름을 포인터 변수에 할당

 

여기서 parr는 모두 배열의 첫 번째 요소를 가리키지만, arr은 배열 자체를 나타내는 상수 포인터로, 그 크기를 변경할 수 없다.

 

2차원 배열의 포인터형

2차원 배열의 경우, 배열 이름은 첫 번째 행을 가리키는 포인터로 사용된다. 2차원 배열은 사실 배열의 배열로, 각 행이 연속된 메모리 블록으로 저장된다. 예를 들어, int arr[3][4];라는 2차원 배열이 있다면, arr은 int (*)[4] 타입의 포인터로 취급될 수 있다. 이는 arr이 4개의 int 요소를 갖는 배열을 가리키는 포인터임을 의미한다.

int arr[3][4];
int (*p)[4] = arr; // 2차원 배열의 첫 번째 행을 가리키는 포인터

 

여기서 pint[4] 타입의 배열을 가리키는 포인터이다. 즉, p는 2차원 배열의 각 행을 가리킬 수 있으며, p+1은 배열의 두 번째 행을 가리키게 된다.