본문 바로가기

C, C++

포인터 배열과 배열 포인터

포인터 배열은 포인터가 여러 개 있는 배열이고 배열 포인터는 배열 자체의 위치를 나타내는 포인터입니다.

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]과 같습니다.

그리고 ptpar의 크기를 몰라도 ptpar의 첫 부분을 참조하는데 문제가 없는 것처럼,

ar3가 int 3개가 2개 들어있는 배열인 것을 몰라도 int 3개인 것만 알면 ar2에서 문제없이 참조가 가능합니다.

 

※ 단순 이중 포인터에 이중 배열을 대입할 수 없습니다.

int** ptt = ar3;//오류

'C, C++' 카테고리의 다른 글

함수 호출 규약  (0) 2019.12.10
배열 포인터 함수 인수  (0) 2019.12.09
가변 인수 함수  (0) 2019.12.07
함수 디폴트 인수  (0) 2019.12.05
함수 오버로딩  (0) 2019.12.03