이중포인터는 포인터변수를 가리키는 또 다른 포인터변수를 뜻한다.


int num=4;

int *ptr = #

int ** dptr=&ptr; // ptr의 주소값을 저장하는 int 형 이중포인터

dptr은 &ptr을,  *dptr은 ptr의값(&num)을,  **dptr은 *ptr(num)값을 의미한다.

=> 만약 다른 함수안에서 ptr이 가리키는 값을 바꾸고싶다면, 매개변수로 이중포인터를 사용해서 ptr 의 주소값을 전달해야한다.


ex)

void SwapIntPtr( int ** dp1, int ** dp2 )

{

int *temp = *dp1;

*dp1 = *dp2;

*dp2 = *dp1;

}


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


int * arr1[20]; // 길이가 20인 int 형 포인터배열


int num1=1,num2=2,num3=3;

int *ptr1=&num1;

int *ptr2=&num2;

int *ptr3=&num3;

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

int **dptr = PtrArr; // 포인터배열을 이중포인터로 받을 수 있다.



+ Recent posts