프로그래밍 언어/C

C언어 20강)+이중포인터

happy_life 2020. 11. 7. 21:45

이중 포인터

 

포인터 변수는 메모리 주소를 저장하기 위해 사용되는 변수라고 하였다. 그렇다면  포인터 변수 자체의 주소는 무엇일까?? 이를 저장하기 위해 이중 포인터라는 개념이 등장한 것이다.

 

●사용법

자료형 **포인터 변수 이름

 

●이중 포인터 코드 예제

#include <stdio.h>

int main()
{
    int* numPtr1;     // 단일 포인터 선언
    int** numPtr2;    // 이중 포인터 선언
    int num1 = 15;

    numPtr1 = &num1;    // num1의 메모리 주소 저장 

    numPtr2 = &numPtr1; // numPtr1의 메모리 주소 저장

    printf("num1 주소: %d\n", numPtr1); //num1 의 주소 출력
    printf("numPtr1 주소: %d\n", numPtr2);    // numPtr1의 주소 출력

    printf("num1의 값 역참조 : %d\n", *numPtr1); //numPtr1을 이용해 num1값 역참조
    printf("num1의 값 두번 역참조: %d\n" ,**numPtr2); //numPtr2을 이용해 num1값 역참조
    
    return 0;
}

결괏값

 

그림으로 보면 이런 식으로 총 두 번 참조되는 것이다.