포인터 배열은 포인터가 여러 개 있는 배열이고 배열 포인터는 배열 자체의 위치를 나타내는 포인터입니다.
int* ar[3];//int 포인터가 3개 있는 배열(포인터 배열)
int (*ar2)[3];//int 배열의 포인터(배열 포인터)(괄호를 꼭 써주세요.)
int의 포인터는 int 배열을 담을 수 있었습니다. 그러니까 int 배열의 포인터는 int 이중 배열을 담을 수 있습니다.
int ar3[2][3] = {{1,2,3},{4,5,6}};
ar2 = ar3;//*ar2는 ar3[0]과 같습니다.
int 포인터에 배열을 넣으면 포인터는 배열의 첫 부분을 참조하는 것처럼
int par[3] = {1,2,3};
int* pt = par;//*pt는 par[0]과 같습니다.
그리고 pt는 par의 크기를 몰라도 pt가 par의 첫 부분을 참조하는데 문제가 없는 것처럼,
ar3가 int 3개가 2개 들어있는 배열인 것을 몰라도 int 3개인 것만 알면 ar2에서 문제없이 참조가 가능합니다.
※ 단순 이중 포인터에 이중 배열을 대입할 수 없습니다.
int** ptt = ar3;//오류