0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言指针p、*p、&p、*&p、&*p符号分别代表什么意思?

硬件攻城狮 来源:嵌入式悦翔园 2023-05-29 15:05 次阅读

前言

C语言中,指针是非常重要的概念。指针是一个变量,其值为另一个变量的地址。使用指针可以直接访问内存中的数据,这使得C语言非常灵活和强大。在学习C语言时相比大家都已经知道了&和*的区别了,但你知道*&p和&*p又代表什么吗?

写个测试程序

下面是一个简单的C语言代码,可以用来演示上面提到的几个标识符,让我们更好的理解几个标识符的意义:

#include

intmain(){
inta=10;
int*p=&a;
int**pp=&p;

printf("a=%d
",a);//打印a的值
printf("&a=%p
",&a);//打印a的地址
printf("p=%p
",p);//打印p的值,即a的地址
printf("*p=%d
",*p);//打印p所指向的变量的值,即a的值
printf("&p=%p
",&p);//打印p的地址
printf("*pp=%p
",*pp);//打印pp所指向的指针变量p的值,即a的地址
printf("**pp=%d
",**pp);//打印pp所指向的指针变量p所指向的变量的值,即a的值
printf("&pp=%p
",&pp);//打印pp的地址
printf("*&p=%p
",*&p);//打印p的值,即a的地址
printf("&*p=%p
",&*p);//打印p的地址

return0;
}

下面,我们来运行一下这个程序,看看输出结果:

a=10
&a=0x7fff87a4ce94
p=0x7fff87a4ce94
*p=10
&p=0x7fff87a4ce98
*pp=0x7fff87a4ce94
**pp=10
&pp=0x7fff87a4cea0
*&p=0x7fff87a4ce94
&*p=0x7fff87a4ce94

这个程序定义了一个整型变量a,一个指向整型变量的指针p,一个指向指针变量p的指针pp。程序输出了上面提到的几个标识符所代表的值或地址。运行这个程序,可以看到它的输出结果,从而更好地理解这些标识符的含义。

从上面的运行结果可以看出*p打印的是a的值,也就是p指向变量的值,这点是毋庸置疑的,想必大家也都知道,那我们一起来看看其他的变量分别代表什么意思吧!

p:指针变量名。在定义指针变量时,需要指定指针所指向变量的数据类型。例如,int *p; 定义了一个指向int类型变量的指针变量p。

*p:解引用操作符。它用于访问指针所指向的变量的值。例如,*p = 10; 将10赋值给p所指向的变量。

&p:取地址操作符。它用于获取指针变量p的地址。例如,int *p; int **pp = &p;定义了一个指向指针变量p的指针变量pp。

*&p:这个操作符等价于p。它首先将p取地址,然后再将其解引用,得到p本身的值。

&*p:这个操作符等价于p。它首先将p解引用,得到p所指向的变量的值,然后再将其取地址,得到p本身的地址。

小结

a和*p输出的,都是变量a的值。

&a和p输出的,都是a的地址。

&*p和*&p其实都是p,也就是a的地址。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7530

    浏览量

    128698

原文标题:C语言指针p、*p、&p、*&p、&*p符号分别代表什么意思?

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    p, *p, &p

    定义一个指针变量 int *p那么,p表示指针指向的地址(如A);*p表示p指向地址里的内容(即
    发表于 01-16 21:49

    请问MSP430的P5OUT &amp;= ~(1 << P55)怎么理解?

    请问P5OUT &amp;= ~(1
    发表于 03-19 03:47

    使用P&;E Micro MultiLink调试IMXRT1064闪存编程错误怎么解决?

    在使用 P&;amp;E Micro Probe 进行调试期间,我遇到以下错误。你能告诉我使用 MCUXpresso 的 P&;amp;E 微型调试探针调试可能出现的错误和
    发表于 03-14 13:11

    可以使用P&;amp;E Multilink Universal对RT1064 QSPI Flash on chip进行编程吗?

    我刚拿到 RT1064-EVK 来尝试评估我的应用程序的功能。 在我使用 P&;amp;E Multilink Universal 使用 MCUXpresso 为 MK66 和 KV58
    发表于 06-01 08:26

    R&amp;amp;amp;S ZNLE矢量网络分析仪的主要特点及应用优势

    R&amp;amp;S®ZNLE 矢量网络分析仪契合“Measurements as easy as ABC”的标语: 易于配置、易于校准、易于测量。 闻名遐迩的优质设计、创新的用户界面以及紧凑尺寸使 R&amp;
    发表于 12-09 09:29 1177次阅读

    R&amp;amp;amp;S FSC3台式频谱分析仪的主要特点及应用范围

    罗德与施瓦茨的R&amp;amp;S®FSC是一款高性价比,小体积的台式频谱分析仪,它具备罗德与施瓦茨一贯的高品质,可以满足所有重要的频谱分析任务。R&amp;amp;S®FSC应用范
    发表于 12-09 09:41 919次阅读

    R&amp;amp;amp;S FSL6台式信号分析仪的功能特点及应用范围

    R&amp;amp;S®FSL 是一款多功能而且经济实用的信号分析仪。R&amp;amp;S®FSL全系列标配28MHz的信号解调带宽,远高于其他同类产品。无论是频谱、噪声系数、ACL
    发表于 12-09 09:46 1124次阅读

    欧拉 Summit 2021 安全&amp;amp;可靠性&amp;amp;运维专场:主流备份技术探讨

    在openEuler Summit 2021 安全&amp;可靠性&amp;运维专场上,高冲对为数据安全而生,统信软件备份还原工具分享。
    的头像 发表于 11-10 17:42 1548次阅读
    欧拉 Summit 2021 安全&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;可靠性&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;运维专场:主流备份技术探讨

    存储类&amp;作用域&amp;生命周期&amp;链接属性

    七、链接属性前言本篇文章将会为大家介绍一些变量相关的存储属性、作用域、生命周期以及链接属性的一些知识,有助于大家更好地理解程序,分析程序。一、存储类&amp;amp;作用域&amp;amp
    发表于 12-09 15:51 5次下载
    存储类&<b class='flag-5'>amp</b>;作用域&<b class='flag-5'>amp</b>;生命周期&<b class='flag-5'>amp</b>;链接属性

    A2B车载音频总线-车机音频&amp;amp;amp;麦克风阵列测试

    基于美格信系统的A2B车载音频总线-车机音频&amp;amp;麦克风阵列测试应用笔记
    发表于 09-19 11:04 2442次阅读
    A2B车载音频总线-车机音频&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;麦克风阵列测试

    如何区分Java中的&amp;amp;和&amp;amp;&amp;amp;

    首先给i赋值为0,如果i大于10,并且i++等于1,则输出“错误”和i的值。否则输出“正确”和i的值。分别用&amp;和&amp;&amp;运行,观察运行结果的不同。
    的头像 发表于 02-24 10:46 1222次阅读
    如何区分Java中的&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;和&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;

    if(a==1 &amp;amp;&amp;amp; a==2 &amp;amp;&amp;amp; a==3),为true,你敢信?

    接下来咱们来尝试解决这个问题。假设 if(a==1&amp;&amp;a==12)是等于 true的,那么a肯定不可能是一个“普通的变量”。它势必要有能力在执行的时候能够动态改动值。
    的头像 发表于 05-08 11:01 752次阅读
    if(a==1 &<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>; a==2 &<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>; a==3),为true,你敢信?

    HarmonyOS &amp;amp;amp;amp;润和HiSpark 实战开发,“码”上评选活动,邀您来赛!!!

    出色的系统 助力优秀的设备 为应用开发者带来丰富的体验与想象空间 正如当HarmonyOS遇见润和HiSpark 这万物互联的时代 将由你的&amp;lt; 代码 &amp;gt;来定义
    的头像 发表于 04-11 15:33 828次阅读
    HarmonyOS &<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;润和HiSpark 实战开发,“码”上评选活动,邀您来赛!!!

    你使用shell脚本中的2&amp;gt;&amp;amp;1了吗?

    run_cmax > ./starrc_cmax.logs 2>&amp;1中的 2>&amp;1是啥意思?
    的头像 发表于 07-30 14:44 1069次阅读

    摄像机&amp;amp;amp;雷达对车辆驾驶的辅助

    摄像机&amp;amp;雷达担负着可辅助驾驶员安全驾驶的、高级驾驶辅助系统的传感功能。尼得科正在进一步推进摄像机&amp;amp;雷达的高性能化进程。
    的头像 发表于 11-26 10:02 518次阅读
    摄像机&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;雷达对车辆驾驶的辅助