C语言二级指针(指向指针的指针)的用法
由于C语言指针是一个变量,在内存中占据一定的空间,并且具有一个地址,所以这个地址也可以利用指针来保存。我们可以声明一个指针来指向它,这个指针称为指向指针的指针,也称为二级指针。
一般来说,声明指向指针的指针的形式如下:
例如,下面语句声明了一个指向指针的指针 pp,其指向指针 p:
【示例1】定义一个指向指针的指针 pp。C语言代码如下:
上述程序中 p 指向的是变量 a,因此 *p 的值为 10,p 的值为变量a的存储地址。而 pp 指向指针 p,因此 *pp 的地址为指针 p 的值,即变量 a 的存储地址,而 **pp 才是变量 a 的值,也即 10。这就符合了上述输出结果。
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
一般来说,声明指向指针的指针的形式如下:
存储类型数据类型**指针变量名
其中,参数说明如下。- 数据类型是指通过两次间接寻址后所访问的变量类型。
- 两个星号 “**” 表示二级指针。
例如,下面语句声明了一个指向指针的指针 pp,其指向指针 p:
int i,*p=&i;
int **pp=&p;
【示例1】定义一个指向指针的指针 pp。C语言代码如下:
#include <stdio.h> int main() { int a; int *p=&a; /* 定义整型指针p并初始化 */ int **pp=&p; /* 定义指向指针的指针pp,并初始化 */ a=10; printf ("a= %d\n",a); /* 输出a、p、pp等值 */ printf ("p= %d\n",p); printf ("*p= %d\n",*p); printf ("*pp= %d\n",*pp); printf ("**pp= %d\n",**pp); }运行结果:
a= 10
p= 6487572
*p= 10
*pp= 6487572
**pp= 10
上述程序中 p 指向的是变量 a,因此 *p 的值为 10,p 的值为变量a的存储地址。而 pp 指向指针 p,因此 *pp 的地址为指针 p 的值,即变量 a 的存储地址,而 **pp 才是变量 a 的值,也即 10。这就符合了上述输出结果。
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。