강좌 & 팁
다중 포인터
다중 포인터란 포인터 변수의 시작 주소 값을 저장하기 위한 포인터를 말한다.
**P 처럼 **가 2개 이상 붙어 있으며, 변수의 선언 형식은 다음과 같다
자료형 ** 포인터 변수명;
int ** p;
*이 2개 인 포인터는 이중 포인터 또는 더블 포인터 라고 하며
자신보다 *이 하나 적은 포인터 변수의 주소를 저장할 수 있다.
int a = 100;
int *p = &a;
int **pp = &p;
int ***ppp = &pp;
정리하면 다음과 같다.
|
* |
** |
*** |
A → 100(값) |
*A → error |
**A → error |
***A → error |
P → 1000(주소) |
*P → 100(값) |
**P → error |
***P → error |
PP → 2000(주소) |
*PP → 1000(주소) |
**PP → 100(값) |
***PP → error |
PPP → 3000(주소) |
*PPP → 2000(주소) |
**PPP → 1000(주소) |
***PPP → 100(값) |
다중포인터의 사용법은 다음의 예제로 확인하자.
#include <stdio.h>
int main()
{
int A = 100;
int *P = &A;
int **PP = &P;
int ***PPP = &PP;
printf("------------------\n");
printf("&A : %08X\n", &A);
printf("&P : %08X\n", &P);
printf("&PP : %08X\n", &PP);
printf("&PPP : %08X\n", &PPP);
printf("------------------\n")
printf("A : %d\n", A);
printf("P : %08X\n", P);
printf("PP : %08X\n", PP);
printf("PPP : %08X\n", PPP);
printf("------------------\n");
printf("*P : %d\n", *P);
printf("*PP : %08X\n", *PP);
printf("*PPP : %08X\n", *PPP);
printf("------------------\n");
printf("**PP : %d\n", **PP);
printf("**PPP : %08X\n", **PPP);
printf("------------------\n");
printf("***PPP : %d\n", ***PPP);
return 0;
}
<프로그램 설명>