printf-怎么理解指针运算符"*"和自增"++"的应用?

问题描述

怎么理解指针运算符"*"和自增"++"的应用?

例:int a[5]={11,22,33,44,55};
int p=a;
printf("*p++ = %dn",*p++);
printf("
++p = %dn",*++p);
上面的例子,输出结果都不一样,但它们优先级都是自右向左结合,该怎么理解?

请大神指点迷津,感谢!!!!

解决方案

这个问题主要还是理解 ++ 的功能,与 * 与 ++ 的执行优先级。
++ 在后是先执行,再加一;而在前是先加一,再执行。

解决方案二:

*p++返回的是自增前的值
*++p返回的是之后的值

解决方案三:

p++是先用后加
++p是先加后用

解决方案四:

p++第一次用的值是p的值
++p第一次用的值是p的值加1
然后再进行指针运算

时间: 2025-01-21 11:52:46

printf-怎么理解指针运算符"*"和自增"++"的应用?的相关文章

指针运算符与指针表达式

6.3.1指针运算符与指针表达式 在C中有两个关于指针的运算符: •&运算符:取地址运算符,&m即是变量m的地址. •*运算符:指针运算符,*ptr表示其所指向的变量. [例6-2]从键盘输入两个整数,按由大到小的顺序输出. main() { int *p1,*p2,a,b,t;/*定义指针变量与整型变量*/ scanf("%d,%d",&a,&b); p1=&a;/*使指针变量指向整型变量*/ p2=&b; if(*p1<*p2)

服务器-java中这个参数如何理解&amp;amp;quot;goodsAction.action?type=type&amp;amp;amp;gtype=&amp;amp;quot;

问题描述 java中这个参数如何理解"goodsAction.action?type=type&gtype=" java中这个参数如何理解"goodsAction.action?type=type&gtype=" 是服务器类目下的goodsAction类的action方法的什么什么吗 解决方案 goodsAction.action应该是struts2框架的一个叫goodsAction的控制器方法 后面的type gtype是参数 解决方案二: goo

7.1 一切指针都是纸老虎:彻底理解指针

7.1.1  指针的运算 从本质上讲,指针也是一种数据,只不过这种数据有点特殊而已.我们通常所见的数据就是各种数值数据文字数据等,而指针所表示的是内存地址数据.既然是数据,那么自然就涉及到了数据的运算.像普通数据一样,指针也可以参与部分运算,包括算术运算.关系运算和赋值运算,而我们最常用的就是指针的算术加减运算. 如果指针的值是某个内存位置的地址值,那么我们就说指针指向这个内存位置.而指针的加减运算,实际上是让指针的指向发生偏转,指向另外的内存位置.通过这种指针的偏转,可以灵活地访问到该指针起始

&amp;amp;quot;package中的javac,java用法&amp;amp;quot; &amp;amp;amp;&amp;amp;amp; &amp;amp;quot;制作可执行jar文件&amp;amp;quot;

执行 java初学者最早会用的命令无非是就是javac和java,但即使这么简单命令也还会把我们弄得头皮发麻 -__- .Roger下面就"package中的javac,java用法"和"制作可执行jar文件"做点简单的解释. 最基础的东西就不废话了,至于package先讲讲我的理解,因为我觉得知道这点对于开发还是很有帮助的.举个例子说:有两个类Tom和Jerry同属于一个package--Partners //Tom.javapackage Partners;pu

class-为什么无参函数调用了前面加&amp;amp;quot;%d &amp;amp;quot;+会报错哪,只能把&amp;amp;quot;%d &amp;amp;quot;+去掉哪。

问题描述 为什么无参函数调用了前面加"%dn"+会报错哪,只能把"%dn"+去掉哪. class A { private int i; private int j; public void set(int a,int b) { i = a; j = b; } public A() { // System.out.printf("%dn"+"无参函数调用了"); System.out.printf("无参函数调用了&q

CSS2 之 &amp;quot;特殊文本和BIDI文本的字符实体&amp;quot;

特殊文本和BIDI文本的字符实体Using NE NE NCR Using NCR "    &quot    "    quotation mark, =apl quote, U0022 ISOnum    &    &amp    &    ampersand, U0026 ISOnum    <    &lt    <    less-than sign, U003C ISOnum    >    &gt    &

Print2Flash出现&amp;quot;System Error. Code:1722. RPC服务器不可用.&amp;quot;错误解决办法

Print2Flash出现"System Error. Code:1722. RPC服务器不可用."错误. 一般来说这个应该是某个Windows服务没有打开所导致的问题.后来才发现:原来是Print Spooler这个服务没有启动,只要启动这个服务就可以了,启动的时候就不会报错了.

Win7提示&amp;quot;显示器驱动已停止响应并且已恢复&amp;quot;

  "显示器驱动已停止响应,并且已恢复",这个故障,我相信绝大多数用win7的朋友都遇到过,让我们一步一步来解决这个故障: 工具/原料windows 7 系统电脑 步骤/方法故障产生的原因:win7下当开启显示效果为"玻璃效果"和"启用桌面组合"后,显卡工作在2D.3D分频切换状态,桌面采用2D显示频率,而"玻璃效果"等特效会采用3D显示分频效果,如果的显卡不是很好(特别是集成及低端显卡),当用户频繁切换显示效果,这些操作都在

协议格式-这些协议的格式&amp;amp;quot;帧头,功能号,结束符&amp;amp;quot;根据什么而来?

问题描述 这些协议的格式"帧头,功能号,结束符"根据什么而来? 本人小白,不懂一些协议格式,比如,帧头0x15功能号0x01结束符0x0A,这些根据什么依据而来,如果我要修改格式,应该根据哪块部分来修改求各位大神赐教,尽量说的通俗明白一点, 解决方案 这都是人定的,发送方和接收方定好通讯协议 解决方案二: ppp协议帧格式UDP协议格式