SW

c언어 다중포인터 이해 및 간단한 사용 방법

S.Zinlee 2016. 7. 25. 22:19
int val;
int *ip = &val;    //포인터를 포인터변수에 저장한다
변수 val의 값 : **&ip

& : 주소연산자
val : int형 변수

&val : 포인터
ip : 포인터변수(int *)
&ip : 이중포인터
**&ip : 이중 포인터를 사용하여 변수의 값 참조
* : 참조연산자

이중포인터가 가리키는 것은 포인터변수이므로 참조 연산자를 사용하여 포인터변수에 저장된 포인터 값을 구함

이중포인터 변수
  : 이중 포인터가 가리키는 자료형을 파악한 후에 같은 자료형을 가리키는 포인터변수를 선언하면 됨

이중포인터 &ip는 (int *)형 변수의 포인터이므로 결국 이중포인터가 가리키는 자료형은 (int *)형이 될 것. 따라서 (int *)형을 가리키는 이중포인터변수 선언 가능

예)   
int **ipp;    //int*(가리키는 자료형), *(ipp는 포인터 변수임), ipp(변수의 이름)
int val = 10;    //int형 변수의 선언과 초기화
int *ip;              //포인터변수 선언
int **ipp;         //이중포인터변수 선언
ip = &val;         //int형 변수의 포인터를 포인터변수에 저장
ipp = &ip;         //포인터변수의 포인터를 이중포인터변수에 저장
printf("변수 val의 값 : %d\n", **ipp);    //참조연산자를 두 번 사용하여 참조한다.