C언어: 포인터 배열과 배열 포인터
포인터 배열
포인터를 저장하는 배열.
int* arr[3]
과 같이 선언한다.
이때, 배열의 요소에는 다른 배열의 주소도 저장 가능하다.
ex)
int a[4];
int b[5];
int c[6];
이 있으면
int* arr[3] = {a,b,c};
arr[0][1] // (= a[1])
과 같이 접근도 가능하다.
배열 포인터
특정한 크기의 배열만을 가리키는 포인터 (그냥 포인터 자료형과는 다른 자료형을 갖는다)
int (*arr)[3] //길이가 3인 int형 배열만을 가리킬 수 있다. (포인터형은 길이 정보를 담고 있으므로)
과 같이 선언한다.
Increment 연산이 포인터를 배열의 길이만큼 증가시킨다! (다른 포인터형과 마찬가지) -> 다차원 배열에서 한 줄씩 건너뛰기 가능!
ex)
int a[3] = {1,2,3};
int (*arr)[3] = &a;
배열 포인터를 통해 배열 요소에 접근하려면?
*arr[0]
과 같이 작성한다.