이중포인터는 포인터변수를 가리키는 또 다른 포인터변수를 뜻한다.
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; // 포인터배열을 이중포인터로 받을 수 있다.
'C언어 > 열혈C' 카테고리의 다른 글
C : Chapter -16 함수 포인터와 void 포인터 (0) | 2018.03.25 |
---|---|
C : Chapter -15 다차원 배열과 포인터 (0) | 2018.03.25 |
C : Chapter -13 다차원 배열 (0) | 2018.03.23 |
C : Chapter -12 포인터와 함수 (0) | 2018.03.22 |
C : Chapter -11 포인터와 배열 (0) | 2018.03.22 |