34.4ダブルポインタ


ダブルポインタの使用


ポインタメモリアドレスを格納する포인터의 포인터について説明します.
#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;
}

ダブルポインタ宣言


ポインタを宣言する場合は、2回*を使用してポインタ(ダブルポインタ)を宣言できます.

データ型**ポインタ名;

  • ポインタは実際には変数であるため、メモリアドレスを取得することができる.
  • ポインタのメモリアドレスは通常のポインタには保存できません.
  • int **numPtr2;はポインタがintを指すことを示す.(numPtr2 → numPtr1 → num1)
  • ダブルポインタ逆参照


    ダブルポインタnumptr 2に従って実際の値を取得するには、変数の前に2回の逆参照演算子を使用します.
  • は、numptr 2←numptr 1←num 1と同じ形状になるように2回逆参照し、num 1の値を得ることができる.
  • ポインタを宣言するとき、*の数に基づいて3つのポインタ、4つ以上のポインタを作成できます.逆参照の場合は、*を3回または4回以上使用してもよい.

    ソース


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