C언어/열혈C
C : Chapter -14 이중 포인터
최태선
2018. 3. 23. 22:22
이중포인터는 포인터변수를 가리키는 또 다른 포인터변수를 뜻한다.
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; // 포인터배열을 이중포인터로 받을 수 있다.