问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

(*p)++和*(p++)和*p++的区别,为什么?537

发布网友 发布时间:2023-10-27 17:36

我来回答

5个回答

热心网友 时间:2024-12-11 16:10

前缀递增递减和*优先级相同,从右到左;

后缀递增递减比前缀优先级高,从左到右。

比如

int arr[5] = { 1,3,5,7,9 };
int *p = arr;

*++p:p先自+,然后*p,最终为3

++*p:先*p,即arr[0]=1,然后再++,最终为2

*p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]

(*p)++:先*p,即arr[0]=1,然后1++,该语句执行完毕后arr[0] =2

*(p++):效果等同于*p++

热心网友 时间:2024-12-11 16:11

(*p)++,是先取指针P的值,然后对其值进行++运算,
*(p++),是先对指针P进行++运算,然后再取取值,
*p++,同*(p++),因为按优先级来看,*和++是同级,他们都是从右到左的顺序进行运算,所以先++,再*。

如果
char q[5] = "am";
char *p = q;
那么,
(*p)++后,p就变成了"bm";因为是进行对其首元素进行加1运算
*(p++)后,p就变成了"m",因为是先指向下一个元素,再进行取值运算,
*p++同上面,
如果只是征对这3个语句赋值给其他变量的话,3个的结果都是a,在这里。
char o = (*p)++;
char m = *(p++);
char n = *p++;
都是a。

热心网友 时间:2024-12-11 16:11

*(p++):取出指针p所指地址中的数据,指针+1                                                      

*p++        :  等同于 *(p++)                                                              

(*p)++  : 取出指针p所指地址中的数据,地址中的数据+1                      

********************************************************

tip1.  * 与 ++的优先级相同的,它们的结合性都是自右向左

tip2.  ()的优先级高于*和++

****************************************************************

优先级、结合性分析:     

*p++      由(tip1)可知,p先与++结合,再与*结合,

*(p++)     由(tip2)可知,p先与++结合,再与*结合

得出结论:*p++等同于 *(p++)

**********************************************************

变量分析:

*(p++)      由(tip2)可知,是p先与++结合,变量是  p, 

得出结论:*(p++)      // 是指针所指的地址值在变化            (不同点)

(*p)++       由(tip2)可知,p先与*结合,得到*p

是*p与++结合,变量是  *p

得出结论:(*p)++    //是指针所指地址中的数据值在变化   (不同点)

******************************************************************** 

小结:    

因为(tip1、tip2)可得出:   

1.指针所指地址自增

*p++等同于*(p++)

*++p等同于*(++p)

2.指针所指地址中数据自增

++(*p)等同于++*p

(*p)++

*********************************************************

作为输出项时

(左自增:先求变量变化,再输出)   

形式:++p、*++p、++*p、++(*p)、

(右自增:先输出变量当前所指值,再求变量的变化)

形式:p++、*p++、(*p)++、*(p++)

哪个是变量:(在tip1、tip2的基础上)与 ++  结合的整体是变量

++p        :  p   是变量、 

++(*p):    (*p)是变量

***********************************************************

热心网友 时间:2024-12-11 16:12

楼主可以去看看c语言优先级有关的知识。首先*p++等价于*(p++)。至于为什么会等价呢?根据c语言的优先级。*与++的优先级同处在第二级别上。他们的优先级是一样的,又因为处在第二级别的优先级运算符是结合方向是从右到左,所以当出现*p++这样的表达式的时候,根据优先级别相同,并且结合方向是从右到左,所以就等价于*(p++)了。那么也就是,先将p指针移动到下个p指针所指向元素的地址的下一个地址,然后再对那个地址取值。(*p)++是取p所指向地址的值,然后再将这个值+1.这里举个例子,比如
int a[2]={1,10};
int *p=a;
*p++//的结果就是等于数组的第二个元素10.
(*p)++//的结果就是1+1=2.
楼主,我这样解释,把意思讲明白了么?

热心网友 时间:2024-12-11 16:13

()的优先级高,所以()里面的先执行。另外++的优先级高于*。
(*p)++中,是p所指的东西++
*(p++)中,是p的地址++。*p++与*(p++)一样的。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
用六个成语各造一段话 关于把握机会的名言名句 关于把握住机会的名言名句(把握机会,成就未来) 关于把握机会的名言名句(把握机会的励志句子) 关于机会的名言名句篇一 包括“机遇”的名言名句(一) BPM中国普及之路还有多远? 哪个公司可以做OA系统 目前业内有很多人认为OA现在某些应用或者说功能在向BPM领域延生,请问... ting的三个声调组词 丹麦羽毛球公开赛男单决赛,石宇奇2:1战胜李梓嘉,如何评价这场比赛?_百 ... 展期有什么要求么? 唐玄宗儿子 孙子2 萧可组什么词2 萧瑟的萧可以组什么词1 婚庆用品有哪些32 舌头上有一块一块的没有舌苔是缺什么1 我舌头上的舌苔不怎么好!就是跟我说是缺少维生素,可是,一块一...2 舌头上的白苔一块块的缺少是怎么回事8 全国最大最全的内衣批发市场在哪61 JSP连接数据库查询数据时出现java.lang.Numbe...1 郑州秋季大河车展是什么时间?地点在那里?7 五棵松到花乡桥公交车 现实中在山上看到树上的蛇意味着什么意思2 航班乘客被投诉有记录没 我梦见蛇,我从山上滑下来。看到水中有蛇,我躲开蛇,向草丛中走... 看见两条蛇缠在一起有什么迷信说法?386 在山上遇见大蛇是什么征兆3 看见俩个蛇在交配有什么预兆309 贷款逾期可以申请的最长贷款展期是多久 虽然已经限制未成年打游戏,但为何国内的游戏还是放不开? 内毒素和外毒素的区别48 2012郑州车展什么时候啊1 第一个喜欢的人,和第一个谈恋爱的恋人哪个重要呢? 我在沈阳卖蜡烛,氦气球等婚庆用品,但是氦气价格高于氢气,氢气... 铁三角AT9911和得胜SM-17有什么区别 【高分200】求魔兵传奇高清下载资源(越高清越好) 怎么一年内修改两次怎样才能一年修改两次? 舌头上一块块白的是怎么回事?4 舌苔一块一块的发白是怎么回事应该如何治疗,请各位专 女朋友经常不回微信怎么办以下几招来解决1 最近打算入手一款德胜电容麦SM-17不知道这款咋样?有用过的... 《我的女朋友出轨了吗 不用手机号怎么申请新的 晚上睡觉总觉得有蚊子在咬,怎么会这样?24 小腿上皮肤像脱皮一样,冬天脱了秋裤,很多白色粉末出来,没有其...23 新股申购中签后怎么进行缴费167 雏鹰争章的作文600字26 任务管理器进程太多怎么办58 Win7系统,任务管理器进程数开机就有70多,是不是有的可以...3