*++p 和 ++*p 有什么区别?
最近有同学在刷笔试题的时候,遇到这么一个问题。
#include先是一个数组,然后有个指针,赋值是 a + 2,所以 p 指向了元素20。int main() { int array[5] = {0, 10, 20, 30, 40}; int *p = array + 2; printf("%d ", *++p); printf("%d ", ++*p); return 0; }
最后是两个输出语句,就是刚才说的 *++p 和 ++*p。
区别这两个表达式,很多同学会想到优先级,先算什么再算什么,但是因为前置++和后置++本身就有一个先算和后算的问题,再结合优先级,容易乱。
*++p 因为是前置的++,前置的特点就是在执行这条语句之前变量的值加一,所以先进行 p 加一的操作,p 指向了30。
然后再结合星号,取到的值是30。
换一种写法,可能更好理解一些:
p = p + 1;
printf("%d
", *p);
++*p 也是前置的++,只不过这次加的对象是*p,所以这个地方*p加不加括号结果都一样。
++*p; ++(*p);p指向30,对30加一就变成了31。
两个输出语句,一个输出30,一个输出31。
root@Turbo:test# ./test 30 31 root@Turbo:test#自己写代码的时候,不建议写这样的代码,过于复杂,给别人理解造成困难,有时候换个编译器,可能结果也不一样。
如果把它拆成两行来写,理解起来就会容易得多。
最后,我再加上一行代码,这样写应该输出多少?
#includeint main() { int array[5] = {0, 10, 20, 30, 40}; int *p = array + 2; printf("%d ", *++p); printf("%d ", ++*p); printf("%d ", *p++); return 0; }
审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
printf函数
+关注
关注
0文章
31浏览量
6226 -
Printf
+关注
关注
0文章
84浏览量
14633
原文标题:*++p 和 ++*p
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
微波雷达和毫米波雷达有什么区别
微波雷达和毫米波雷达有什么区别 前言:不知道大家有没有发现,各种雷达模块的使用开始逐渐加入各种智能家居产品了,像人来灯亮,人走灯灭这种雷达感应的产品早几年就开始进入市场了,还有各种感应开关等产品
浪涌保护器2P与1P+N的区别和行业应用详解
电气设备被击穿或损坏。随着配电系统的多样化和接地方式的不同,浪涌保护器出现了多种结构形式,其中以 2P型 与 1P+N型 最为常见。它们在外形、内部结构、保护原理以及应用场景上均存在显著差异。地凯防雷将系统分析两者的区别、参数含
网线cat5e 4p和4pr什么区别
网线标识中的“CAT5e”和“4P”或“4PR”分别代表了网线的类别和内部结构,它们之间有着明显的区别,主要体现在以下方面: 一、网线类别:CAT5e 定义:CAT5e即超五类网线,是五类网线
ATX主板和ITX主板有什么区别?
在计算机硬件领域,主板是承载计算机核心组件的关键部件,其类型多样,性能也各有千秋。那么ATX主板和ITX主板有什么区别呢,下面来介绍一下:
AIGC和AI有什么区别
AIGC是AI在内容生成领域的一个特定应用方向,AI的技术发展为AIGC提供了基础和支撑。那么,AIGC和AI有什么区别呢?下面,AI部落小编带您详细了解。
电机几级怎么区分有什么区别
。例如,标注为“4/6”的可能表示四级电机,但具体还需根据电机制造商的标识习惯来判断。有时,铭牌上会直接给出磁极对数的信息,如“2P”表示两极电机,“4P”表示四级电机等。 测量电机铁芯长度 电机的铁芯长度与级数有一定的
ads1292和ads1292R之间有什么区别?
1、导联线连接上,社区内有两种不同的用法,不知有什么区别?见下图
上图是TI评估板上给的
上图是社区内一位大哥给的
对比一下第一张图 IN2P连接到了ELL而第二张图IN2P连接
发表于 12-20 12:56

*++p和++*p有什么区别?
评论