C

포인터 배열과 포인터 배열의 포인터 형

yeooniyeoon 2022. 9. 23. 23:19
728x90
SMALL

포인터 배열과 포인터 배열의 포인터 형

1차원 배열의 포인트 형은 배열의 첫번째 요소의 자료형에 따라 결정된다.

1차원 포인터 배열도 마찬가지이다.

 

int * intarr[20];
double * dbarr[10];

 

위에서 선언된 배열 intarr의 첫번째 요소는 int형 싱글포인터이다.

따라서 배열 intarr의 포인터 형은 int형 더블포인터가 된다.

마찬가지로 배열 dbarr는 double형 싱글포인터를 요소로 가지므로 double형 더블포인터가 된다.

 

 

 

int num1=10, num2=20, num3=30;
int * ptr1=&num1;
int * ptr2=&num2;
int * ptr3=&num3;

int * ptrArr[3]={ptr1, ptr2, ptr3};
int **pptr=ptrArr;

printf("ptr1=%d ptr2=%d ptr3=%d", *(pptr[0]), *(pptr[1]), *(pptr[2]));

return 0;

 

위 코드를 통해 싱글포인터를 배열의 요소로 갖는 포인터 배열의 포인터 형이 더블포인터임을 확인할 수 있다.

 

int형 변수 num1, num2, num3 선언 후 포인터 변수 ptr1, ptr2, ptr3에 각각 주소를 전달한다.

==> int형 포인터 배열 ptrArr 선언 후 ptr1, ptr2, ptr3를 요소로 선언한다.

==> 더블 포인터인 pptr 선언 후 ptrArr를 전달한다.

==> 포인터 변수 pptr을 사용하여 배열 내용 출력함.

 

위 코드의 7행에서 ptrArr을 pptr에 대입하는 과정에서 오류가 발생하지 않는다.

이는 ptrArr과 pptr의 포인터형이 같음을 의미한다.

 

배열을 출력하는 10행에서는 포인터 변수를 배열명 대신 사용할 수 있으므로 pptr을 사용하여 출력하였다.

728x90
반응형
SMALL