| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 639 人关注过本帖
标题:关于*p++,*(p++),(*p)++的问题
只看楼主 加入收藏
苍天的蓝悠
Rank: 1
等 级:新手上路
帖 子:11
专家分:4
注 册:2015-7-23
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
关于*p++,*(p++),(*p)++的问题
我理解的是*p++和*(p++)是相等的,因为根据优先级可知,*和++是同级的,顺序是自右至左。
问题就在于这题,我认为应该选A,可是却是选D,而且程序照敲,答案的确是D,所以无法理解。
#include<stdio.h>
main()
{
    int a[5]={1,2,3,4,5};
    int *p=a,**q=&p;
    printf("%d\n",*(p++));
    printf("%d",**q);
}
A.2,2
B.1,1
C.3,4
D.1,2
搜索更多相关主题的帖子: 优先级 而且 
2015-08-17 17:54
文江
Rank: 2
等 级:论坛游民
帖 子:77
专家分:20
注 册:2015-8-17
收藏
得分:0 
(*p)++,是先取指针P的值,然后对其值进行++运算,*(p++),是先对指针P进行++运算,然后再取取值,*p++,同*(p++),因为按优先级来看,*和++是同级,他们都是从右到左的顺序进行运算,所以先++,再*。
所以有这样的结果int *p=a,*p=a【0】=1,而*(p++);是先自加后取值 ,所以就是1了,又p++后有&p=2所以就是2了。
收到的鲜花
  • hjx11202015-08-17 19:37 送鲜花  10朵   附言:我很赞同
2015-08-17 19:28
实际应用
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:89
专家分:341
注 册:2015-5-30
收藏
得分:0 
其实,p 在 * 之前并未加一
p++ 的意思是先用p 再 +1
与括号无关
这道题的陷阱就在括号这地方
2015-08-17 21:36
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
楼主看的书一定没讲过 表达式求值 和 副作用 的关系,换本书吧
对于 p++ 这个表达式而言,其值是 p原先的值,副作用是 p的值增一。
2015-08-18 09:13
苍天的蓝悠
Rank: 1
等 级:新手上路
帖 子:11
专家分:4
注 册:2015-7-23
收藏
得分:0 
回复 3楼 实际应用
但是()的优先级是最高的啊,那么不是应该先算括号里的内容吗?
2015-08-18 23:14
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:20 
这好像又是++i和i++的问题了。如果抛开指针运算,楼主觉得printf("%p",p++)得到的是p原来的值?还是p自增后的值呢?如果是原值,那么*(p++)肯定指向的是数组的原始位置了。

能编个毛线衣吗?
2015-08-19 05:55
列车永不停息
Rank: 2
等 级:论坛游民
帖 子:76
专家分:48
注 册:2015-7-31
收藏
得分:0 
回复 2楼 文江
按照这样说,答案不就应该是A了吗?
2015-08-19 09:33
hpujlu
Rank: 1
等 级:新手上路
帖 子:2
专家分:4
注 册:2015-8-10
收藏
得分:0 
回复 7楼 列车永不停息
2楼说的不对,参考6楼
2015-08-19 10:35
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
后缀++/--祗保证在下一行生效,没保证在当前行生效,当前行也不保证顺序。

授人以渔,不授人以鱼。
2015-08-19 10:44
快速回复:关于*p++,*(p++),(*p)++的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022512 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved