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); //참조연산자를 두 번 사용하여 참조한다.