[C/C++] 더블포인터(**)

Hyo Kyun Lee·2021년 8월 13일
0

C/C++

목록 보기
1/23

1. 개념

리눅스 C언어 활용시 매우 많이 등장하는 개념으로, 반드시 기억하고 있어야 한다.

포인터가 변수의 메모리 주소를 저장한다면,
더블 포인터는 그 메모리 주소를 저장한 포인터의 메모리 주소를 저장한다.

2. 코드예시

#include <stdio.h>

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

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

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

    printf("%d\n", **numPtr2);    // 20: 포인터를 두 번 역참조하여 num1의 메모리 주소에 접근

    return 0;
}

위 코드를 통해 유의해야할 점은 다음과 같다.

  • num1 변수에는 정수 변수를 담는다.
  • 정수 변수를 담고 있는 num1 변수의 메모리 주소를 numPrt1 포인터에 저장한다.
  • numPrt1 포인터의 메모리 주소를 저장한다.
  • numPrt1은 메모리 주소를 담고 있는 포인터이므로, 이후 포인터들의 저장은 중복포인터로 저장한다.

3. 참조링크

https://dojang.io/mod/page/view.php?id=279

0개의 댓글