포인터의 포인터 | c Note 2004/09/06 21:27
http://blog.naver.com/bravedog/100005561904

포인터의 포인터는 보통 이중 포인터라고 부른다. 이중 포인터는 현재 가리키는 주소가 변수의 주소가 아니라 다른 변수를 가리키는 포인터의 주소를 가리킨다. 이중 포인터를 주로 사용하는 경우는 2차원 구조를 가지는 메모리의 주소를 가리킬 대이다.

 

데이터 형 **포인터변수명;

 

이중 포인터를 사용하여 가리키는 주소의 값을 알고 싶은 경우에는 포인터 형 변수 앞에 '*'를, 가리키는 주소의 포인터가 다시 가리키는 주소의 값을 알고 싶은 경우에는 '**'를 사용한다. 이해를 돕기 위해서 프로그램을 통해 설명해 보도록 하겠다.

 

 1  #include <stdio.h>
 2
 3  int main()
 4  {
 5      int num =24;
 6      int *p;
 7      int **pp;
 8
 9      // 포인터 설정
10      p = &num;
11      pp =&p;
12
13      // 1차원 포인터
14      printf("*p = %d\n",*p);
15      printf("p = %p\n",p);
16      printf("&p = %p\n",&p);
17
18      // 2차원 포인터
19      printf("pp = %p\n",pp);
20      printf("*pp = %p\n",*pp);
21      printf("**pp = %d\n",**pp);
22
23      return 0;
24  }
25

 

결과 화면

 

 

 

 

 

 

 

 

 

 

 

 

실행 결과를 살펴보면 이중 포인터 형 변수 pp는 변수 num을 가리키는 포인터 형 변수 p의 주소를 가리키고 있음을 알 수 있다. 따라서 *pp는 p의 주소값이 되고, *p는 num변수의 주소가 된다. 또한 이중 포인터를 이용해 num변수를 바로 접근하기 위해서 **pp를 사용했음을 기억해 두자!

Posted by '김용환'
,