포인터 배열
포인터 배열은 포인터를 요소로 담고 있는 배열이다.
int *arpi[5];
arpi 포인터 배열은 int형 포인터를 5개 가지고 있는 배열이다.
배열 포인터
배열 포인터는 2차원 배열 이상의 다차원 배열에서 부분 배열을 가리키는 포인터다.
char arps[5][9]={"고양이","개","오랑우탄","돼지","지렁이"};
char (*ps)[9];
arps는 9바이트의 문자열을 5개 가지고 있는 2차원 배열이고
ps포인터는 9바이트 문자열을 가리키는 포인터이다.
위와 같이 배열 포인터의 형식은 요소의 자료형(*포인터명)[배열 크기] 이다.
*포인터명의 괄호를 없애면 포인터 배열이 되어버리기 떄문에 없애면 안된다.
변수를 배열 포인터로 캐스팅할 때는 포인터명을 뺀 요소의 자료형(*)[배열 크기]로 캐스팅한다.
ar배열에 대해서
ar(배열명)은 배열의 시작번지를 가리키는 포인터 상수이다.
&ar은 ar에 대한 번지인데 포인터 상수는 번지를 갖지 않는다.
그런데 이후에 &ar일때 ar이 포인터 상수가 아닌 배열 그 자체를 가리키는 것으로 변경되었다.
그래서 int ar[5]={1,2,3,4,5}; 일 때
ar의 형은 int * const 이고&ar은 int (*) [5] const 이다. 즉 (int)*5 = 20바이트의 배열을 가리키는 포인터가 된다.
'C++' 카테고리의 다른 글
| [C++] Const 포인터 (0) | 2022.01.03 |
|---|---|
| [C++] 문자형 배열 vs 문자형 포인터 (0) | 2022.01.02 |
| [C++] 포인터 vs 배열 (0) | 2022.01.02 |
| [C++] 다차원배열 (0) | 2022.01.02 |
| [C++] 이중 포인터 (0) | 2022.01.02 |