다중 포인터

 

다중 포인터란 포인터 변수의 시작 주소 값을 저장하기 위한 포인터를 말한다.

**P 처럼 **가 2개 이상 붙어 있으며, 변수의 선언 형식은 다음과 같다

 자료형 ** 포인터 변수명;

int ** p;

 

*이 2개 인 포인터는 이중 포인터 또는 더블 포인터 라고 하며

자신보다 *이 하나 적은 포인터 변수의 주소를 저장할 수 있다.

 

int a = 100;
int *p = &a;
int **pp = &p;
int ***ppp = &pp;

 

다중포인터 01.png

 

정리하면 다음과 같다.

*

**

***

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;
}

 

<프로그램 설명>

 

다중포인터02.png