c语言 *p++与(*p)++、*(p++)三者异同?

[复制链接]
查看11 | 回复5 | 2019-5-24 11:13:25 | 显示全部楼层 |阅读模式
区别:1、*p++与*(p++)是等价的,表示取p所指单元的值,p指向下一单元,即p自加1。2、*p++是指下一个地址。3、(*p)++是指将*p所指的数据的值加一。C编译器认为*和++是同优先级操作符,且都是从右至左结合的,所以*p++中的++只作用在p上,和*(p++)意思一样;在(*p)++中,由于()的优先级比*和++都高,所以++作用在()内的表达式*p上。比如有:int x,y,a[]={1,2,3,4,5},*p=a,*q=a;x=*p++;//执行这一句后x=a[0]=1,p=a+1...
回复

使用道具 举报

千问 | 2019-5-24 11:13:25 | 显示全部楼层
int *p;int a[4]={1,2,3,4};p=a;*p++:由于++的优先级高于 * ,所以*p++等价于*(p++);P++,先执行动作后对p加 1 ,先把p给*,得到*p,之后再...
回复

使用道具 举报

千问 | 2019-5-24 11:13:25 | 显示全部楼层
tip1.* 与 ++的优先级相同的,它们的结合性都是自右向左tip2.()的优先级高于*和++****************************************************************优先级、结合性分析:
*p++
由(tip1)可知,p先与++结合,再与*结合,*(p++)
...
回复

使用道具 举报

千问 | 2019-5-24 11:13:25 | 显示全部楼层
*p++与*(p++)是等价的,表示取p所指单元的值,p指向下一单元,即p自加1。(*p)++表示取p所指单元的值,这个单元的值自加1。//下面主测试程序及运行情况。#includevoid main(){int a[]={1,1,1,1},*p;p=a;*p++;printf("p=%d *...
回复

使用道具 举报

千问 | 2019-5-24 11:13:25 | 显示全部楼层
*p++与(*p)++、是一样的啊,*与++是同一运算级的,都是先得到p的值再自增1,而*(P++)是p的地址加1,再得到它的值...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行