参考:C 指向指针的指针
指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链。通常,一个指针包含一个变量的地址。当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置。
一个指向指针的指针变量必须如下声明,即在变量名前放置两个星号。例如,下面声明了一个指向 int 类型指针的指针:
int **var;
当一个目标值被一个指针间接指向到另一个指针时,访问这个值需要使用两个星号运算符,如下面实例所示:
#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("Address of ptr: &(*pptr) = %p\n", &(*pptr)); printf("\n"); printf("Address of pptr: &pptr = %p\n", &pptr); return 0; }
Outputs:
Value of var = 3000 Value available at *ptr = 3000 Value available at **pptr = 3000 Address of var: &var = 0x7ffff21a1b64 Address of var: ptr = 0x7ffff21a1b64 Address of var: &(*ptr) = 0x7ffff21a1b64 Address of var: *pptr = 0x7ffff21a1b64 Address of ptr: &ptr = 0x7ffff21a1b68 Address of ptr: pptr = 0x7ffff21a1b68 Address of ptr: &(*pptr) = 0x7ffff21a1b68 Address of pptr: &pptr = 0x7ffff21a1b70
原文:https://www.cnblogs.com/alex-bn-lee/p/11161764.html