您的位置:首页 > 新闻 > 资讯 > 一级指针 二级指针

一级指针 二级指针

2024/12/23 16:55:41 来源:https://blog.csdn.net/weixin_55341642/article/details/140234399  浏览:    关键词:一级指针 二级指针

目录

一级指针

 二级指针 

通过二级指针打印原数据 


一级指针

一级指针就是存放变量的指针

代码演示:

#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

代码验证:

小结: 二级指针变量解引用一次就能找到一级指针变量,一级指针变量再解引用就能找到所指向的变量

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com