이중 포인터

개념

  • Pointer to Pointer
  • 자료가 있는 곳을 이중으로 가리키는 포인터
  • 바깥 포인터와 안쪽 포인터로 이루어진다.
  • 바깥 포인터가 가리키는 곳에는 값이 아닌, 포인터(주소 값)이 저장되어 있다.
  • 안쪽 포인터가 가리키는 주소에 저장된 값이 실제 자료이다.
1
2
3
4
| address | variable | value |
| 0x100   |     a    | 100   |
| 0x104   |     p    | 0x100 |
| 0x108   |     q    | 0x104 |

선언

1
2
자료형 **포인터변수명;
int **p;
  • p : 이중 포인터
  • *p : 이중 포인터가 가리키는 곳 - int 형 포인터가 있음
  • **p : int 형 포인터가 가리키는 곳

예시

1
2
3
4
5
6
7
8
char a = 'A', *p, **pp;
p = &a;
pp = &p;
printf("a : %c\n", a);
printf("p : %p\n", p);
printf("pp : %p\n", pp);
printf("*p : %c\n", *p);
printf("**pp : %c\n", **pp);
1
2
3
4
5
6
# 출력
a : A
p : 0x7ffeeb3b5a9c   # 변수 a 의 주소
pp : 0x7ffeeb3b5a98  # 변수 p 의 주소
*p : A
**pp : A

Reference

C 프로그래밍 (김형근, 곽덕훈, 정재화 공저)
C 프로그래밍 강의 (방송통신대 - 이병래)

Comments