目录
一级指针
二级指针
通过二级指针打印原数据
一级指针
一级指针就是存放变量的指针
代码演示:
#include<stdio.h>
int main()
{
int a = 10;
int* pa = &a;
return 0;
}
pa就是一级指针变量,是变量就会有地址,因为变量都是在内存中开辟空间的
通过监视窗口查看 a的地址 和 pa指针变量 和 pa指针变量的地址:
由以上监视可以看出pa存放的是a的地址,取地址pa取出的是pa这个指针变量的地址
内存示意图:
二级指针
那么一级指针变量该如何存储呢?那么就需要二级指针变量来存储一级指针变量的地址
代码演示:
#include<stdio.h>
int main()
{
int a = 10;
int* pa = &a; //一级指针变量
int** ppa = &pa; //二级指针变量
return 0;
}
ppa就是二级指针变量,二级指针变量就是用来存放一级指针变量的地址的
监视窗口查看各个变量:
可以看出 二级指针变量ppa 存放的内容就是 一级指针变量pa 的地址
对于一级指针变量pa类型 int* 的理解:
* 是在说明pa是指针变量,int是在说明 pa 指向的对象的类型是int
对于二级指针变量ppa类型 int** 的理解:
把int**拆开理解:int* 是在说明 ppa 指向的是int*类型的变量,第二个 * 是在说明 ppa 是指针变量
内存示意图:
通过二级指针打印原数据
代码演示:
#include<stdio.h>
int main()
{
int a = 10;
int* pa = &a; //一级指针变量
int** ppa = &pa; //二级指针变量
printf("a = %d\n", **ppa);
return 0;
}
代码解析:
**ppa分解为 * 和 *ppa
*ppa: 二级指针变量解引用一次,找到的是一级指针变量pa,所以可以替换原式 *ppa 等价于 pa
**ppa:由 *ppa替换为 pa后:*pa:一级指针变量解引用,找到的就是原数据 a
最后以%d的形式打印,结果为10
代码验证:
小结: 二级指针变量解引用一次就能找到一级指针变量,一级指针变量再解引用就能找到所指向的变量