| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1365 人关注过本帖
标题:关于指针..在线..等...
只看楼主 加入收藏
y218z903
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-7-27
收藏
 问题点数:0 回复次数:34 
关于指针..在线..等...
main()
{
int a=2,*p=&a,*q=&a;
printf("%d %d ",*p++,*(q++));
p=&a,q=&a;
printf("%d %d",*p,(*q)++);
}      为什么结果是2 2 3 2? 
搜索更多相关主题的帖子: 在线 
2007-07-28 21:56
y218z903
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-7-27
收藏
得分:0 
汗死..哪位高手..帮忙指点下...不盛感激...

2007-07-28 22:33
wengjinxin
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-7-17
收藏
得分:0 

* 和 ++ 的优先级相同,而且都是右结合,所以输出 *p++ 和输出 *(q++) 是一样的(p、q 都指向了a).

至于下面那句,记住,实参传递参数给形参的时候是按从右至左的顺序传递的,这里也是一样
即先执行 (*q)++ 再执行 *p 。而(*q)++ 执行完之后a 的值已经变成3了

2007-07-28 22:41
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 

应该全是2才对。。

++优先级比 * 高 所以*(q++)与*q++无区别

++在后面 所以 是先输出值2然后地址++了

所以只有你最后一个 (*q)++); 才把值2++变成了3

你在最后再加上一句printf("%d",*p); 这句输出是3了




天行健,君子以自强不息!!QQ:68660681
2007-07-28 22:48
vbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:352
专家分:147
注 册:2006-12-30
收藏
得分:0 

为什么我编译的结果是2 2 2 2


清远鹏程万里人才网:[url=http://www.]http://www.[/url]zq.,qy.
2007-07-28 22:50
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 
Turbo C运算符的优先次序
━━━━━━━━━━━━━━━━━━━━━━━━━━━━ high
表达式
────────────────────────────
()(小括号) [](数组下标) .(结构成员) ->(指针型结构成员)
────────────────────────────
!(逻辑非) .(位取反) -(负号) ++(加1) --(减1) &(变量地址)
────────────────────────────
*(指针所指内容) type(函数说明) sizeof(长度计算)
────────────────────────────
*(乘) /(除) %(取模)
────────────────────────────
+(加) -(减)
────────────────────────────
<<(位左移) >>(位右移)
────────────────────────────
<(小于) <=(小于等于) >(大于) >=(大于等于)
────────────────────────────
==(等于) !=(不等于)
────────────────────────────
&(位与)
────────────────────────────
^(位异或)
────────────────────────────
|(位或)
────────────────────────────
&&(逻辑与)
────────────────────────────
||(逻辑或)
────────────────────────────
?:(?表达式)
────────────────────────────
= += -=(联合操作)
────────────────────────────
,(逗号运算符) low


天行健,君子以自强不息!!QQ:68660681
2007-07-28 22:50
wengjinxin
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-7-17
收藏
得分:0 

变量才能++,常量不能++

2007-07-28 22:52
vbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:352
专家分:147
注 册:2006-12-30
收藏
得分:0 

楼上是对的.


清远鹏程万里人才网:[url=http://www.]http://www.[/url]zq.,qy.
2007-07-28 22:53
wengjinxin
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-7-17
收藏
得分:0 
回复:(vbc)为什么我编译的结果是2 2 2 2
你用的不是TC,是VC++吧?编译器不同,没办法
2007-07-28 22:54
vbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:352
专家分:147
注 册:2006-12-30
收藏
得分:0 
那为什么*(p++)不会出现内存问题.

清远鹏程万里人才网:[url=http://www.]http://www.[/url]zq.,qy.
2007-07-28 22:55
快速回复:关于指针..在线..等...
数据加载中...
 
   



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

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