参考:ポインタへのCポインタ
ポインタは、間接アドレス指定の多段形へのポインタであるか、またはポインタのチェーンです。典型的には、ポインタ変数のアドレスを含みます。我々は、ポインタへのポインタを定義する場合、最初のポインタは、第2のポインタのアドレス、実際の位置の値に対する第2のポインタを含みます。
すなわち、変数名の前に2つのアスタリスクを置く、次のようにポインタ変数へのポインタが宣言されなければなりません。例えば、int型のポインタを指すポインタの次の宣言。
int型** ました。
目標値はポインタ値にアクセスするために、間接的に別のポインタを指している場合、次の例に示すように、2つのアスタリスクオペレータが必要です。
- VAR:int型の変数
- PTR:VARへのポインタ
- PPTR:ポインタptr
- Varの値は、3つのメソッドを表します。
- ました
- *のPtr:値に対応するPTRポインタ、すなわち、VAR
- ** PPTR:* PPTR対応するポインタ値PTRすなわち、そう** PPTR = * PTR = VAR
- PTR値を表す(VARアドレスに対応PPTR値)の4つの方法:
- &変数:VaRは即ちPTR、アドレスを表します
- PTR
- &(* PTR):* ptrはVARに対応
- * PPTR:* PPTR対応するポインタ値PTRすなわち、そう* PPTR = PTR =&VAR
- これは3つの方法PPTR値(PTRアドレス)を表します。
- &ptrが:、PTRのアドレスを示しているPPTR
- PPTR
- &(* PPTR):ptrをする* PPTR相当
- これは、PPTRアドレスの方法を表します。
- &PPTR
#include <stdio.h> int main() { int var; int *ptr; int **pptr; var = 3000; ptr = &var; pptr = &ptr; printf("Value of var = %d\n", var ); printf("Value available at *ptr = %d\n", *ptr ); printf("Value available at **pptr = %d\n", **pptr); printf("\n"); printf("Address of var: &var = %p\n", &var); printf("Address of var: ptr = %p\n", ptr); printf("Address of var: &(*ptr) = %p\n", &(*ptr)); printf("Address of var: *pptr = %p\n", *pptr); printf("\n"); printf("Address of ptr: &ptr = %p\n", &ptr); printf("Address of ptr: pptr = %p\n", pptr); printf( "PTRの住所:&(* PPTR)=%のp \ nを"、&(* PPTR)); printf("\n"); printf( "PPTRのアドレス:&PPTR =%のPを\ n"、&PPTR)。 0を返します。 }
出力:
VAR = 3000の値 *のPTR = 3000で入手可能なバリュー ** PPTR = 3000ので入手可能なバリュー &VAR = 0x7ffff21a1b64:VARの住所 VARの住所:PTR = 0x7ffff21a1b64 VARの住所:&(* PTR)= 0x7ffff21a1b64 VARの住所:* PPTR = 0x7ffff21a1b64 PTRの住所:&PTR = 0x7ffff21a1b68 PTRの住所:PPTR = 0x7ffff21a1b68 PTRの住所:&(* PPTR)= 0x7ffff21a1b68 PPTRの住所:&PPTR = 0x7ffff21a1b70