C语言中指针的指针简单理解。做下笔记,记录下学的成果。
定义
如果一个指针变量存放的又是另一个指针变量的地址,则称这个变量为指向指针的指针变量或指向指针的指针。
如下图所示:
其中a为int的变量,值为99。指针变量p1指向变量 a 的地址,值为 a 的内存地址(16进制)。指针变量p2为指向指针的指针,值为 p1 的内存地址。
实例代码
#include
int main()
{
int a = 99;
int *p1 = &a;
int **p2 = &p1;
printf("a=%d, p1=%X, &p1=%X\n",a,p1,&p1);
printf("**p2=%d, *p2=%X, p2=%X\n",**p2,*p2,p2);
return 0;
}
打印结果如下:
a=99, p1=2C7B7A9C, &p1=2C7B7AA0
**p2=99, *p2=2C7B7A9C, p2=2C7B7AA0
从打印结果可以看到:
1、指针变量 p2 指向 p1 的内存地址。
2、*p2 表示 指针p1指向的变量a的内存地址。
3、**p2 表示 p1指向变量a的内存地址对应的变量值,即为99。