*p++是什么意思?
利用指针引用数组元素,比较方便灵活,有不少技巧。在专业人员中常喜欢用一些技巧,以使程序简洁。在看别人写的程序时可能会遇到一些令人混淆的情况,要仔细的分析。
请分析下面几种情况(设p开始时指向数组a的首元素(即p=a)。
① 分析:
p++;
* pi;
p++使p指向下一元素a[1]。然后若再执行* p,则得到下一个元素 a[1]的值
②
*p++;
由于++和*同优先级,结合方向为自右而左,因此它等价于 *(p++)值。
先引用p的值然后,实现*p的运算,然后使p自增1
例8.7 的第2个程序中最后一个 for语句
for(i=0;i<10;i++,p++)
printf("%d", * p);
可以改写为
for(i=0;i<10;i++);
printf("%d”,*p++);
作用完全一样。它们的作用都是先输出*p的值,然后使 p值加1。这样下一次循环时:
* p就是下一个元素的值。
③ *(p++)与*(++p)的作用是否相同?
不相同
前者是取*p值然后使p加1;
后者是先使 p加1,再取*p,若p初值为a(即&a[o]),
如果输出*(p++)得到 a[0]的值,
而输出*(++p),得到a[1]的值。
④++(*p)表示p指向元素加1,如果p=a,则++(*p)相当于++a[0],若a[0]的值为3,则在执行++(*p)(即++a[0])后a[0]的值为4。注意:是元素a[0]的值加1,而不是指针p的值加1;
⑤ 如果 p当前指向 a数组中第i个元素 a[i],则:
*(p--)相当于a[i--],先对p进行“*”运算(求p所指向的元素的值),再使 p自減。
*(++p)相当于a[++i]先使p 自加,再进行“*”运算。
*(--p)相当于a[--i]先使 p 自减,再进行“*”运算。
将++和--运算符用于指针变量十分有效,可以使指针变量自动向前或向后移动,指
向下一个或上一个数组元素。
例如,想输出 a数组的100个元素,可以用下面的方法:
p=a;
while(p<a+100)
printf("%d", * p++);
或
p=a;
while(p<a+100){
printf(“%d”,*p);
p++;}
但如果不小心,很容易弄错。
因此在用*p++的运算时,定要十分小心,清楚是先取p值还是先使p加1。
有什么不足的地方欢迎各位大佬指正
操作系统:Windows10
软件:Devc++
编译器:TDM-GCC 4.9.2 64-bit Release
相关文章
- <![CDATA[ ]]>是什么意思
- mysql数据库中的存储引擎是什么意思呢
- 4年经验之谈,什么是接口测试?怎样做接口测试?
- MySQL 中的 int(11) 到底代表什么意思?
- typedef void(*Fun) (void)是什么意思 函数指针(回调函数) 和函数对象总结
- 变更审核时我们审什么
- (function (window, document, undefined) {})(window, document)什么意思?
- 什么情况下需要考虑分库分表?
- opencvbuildx86下的vc6、vc7、vc8、vc9、vc10、vc11、vc12、vc14、vc15是什么意思?
- 应用日志采集是什么意思?批量采集应用日志软件用哪个?怎么操作?
- 信创是什么意思?涉及哪些行业?为什么要发展信创?
- 【等保】等保测评中双因素认证是什么意思?等于双因子认证吗?
- 软件的license是什么意思?作用是什么?
- 【等保小知识】安全等保是什么意思?是ccrc吗?
- 【IT运维】自动化运维是什么意思?有什么作用?
- shell脚本中使用什么工具进行计算
- 面试题: MySQL的binlog有有几种录入格式?分别有什么区别?
- modelversion maven 什么意思
- 《Oracle PL/SQL程序设计(第5版)》一一1.1 什么是PL/SQL?
- 《大数据存储:MongoDB实战指南》一1.2 什么是云计算
- “操作符-->“在 C++ 中是什么意思
- px、dp和sp,这些单位有什么区别?
- Geogebra 教程之 01 什么是Geogebra,真的可以提高我们数学水平么?
- IP地址 0.0.0.0 是什么意思
- RFID和安防究竟有什么关系?
- 什么是史诗、特性、用户故事和任务
- Content-Type是什么意思?
- 什么是CAD坐标标注?坐标标注使用技巧
- 一美分成就ARM ARM到底是做什么的?
- 面试官:建造者模式是什么?