|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 指针与数组的一个小问题
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
397
人关注过本帖,
1
人收藏
标题:
指针与数组的一个小问题
只看楼主
加入收藏
jovon
等 级:
新手上路
帖 子:15
专家分:7
注 册:2012-1-25
结帖率:
50%
楼主
收藏
(1)
已结贴
√
问题点数:20 回复次数:6
指针与数组的一个小问题
#include<stdio.h>
void main()
{
int arr[5]={6,7,8,9,10};
int *p=arr;
(*p++)+=123;
printf("%d %d\n",*p,*(++p));
}
输出结果为8 8,谁来解释解释。
2012-03-24 16:21
举报帖子
使用道具
赠送鲜花
google天下
等 级:
论坛游民
帖 子:18
专家分:38
注 册:2012-3-14
第
2
楼
收藏
得分:4
先说第二个 输出的8 ,他是a【2】;
再说第一个,由于*(++p)使p指向a【2】所以,也为8,唯一能解释的原因是在函数printf的*(++p)运算产生了副作用。
2012-03-24 16:34
举报帖子
使用道具
赠送鲜花
Wikyo_hoho
等 级:
论坛游侠
帖 子:31
专家分:188
注 册:2012-3-12
第
3
楼
收藏
得分:4
(*p++)+=123;同等于*p+=123;p++;
*(++p)表示表达式值为*p,表达式运算完成后p++;
楼上已经解释,只是补充一下,printf()的参数是从右往左读,所以先是*(++p),再*p
2012-03-24 20:54
举报帖子
使用道具
赠送鲜花
nicum
等 级:
蝙蝠侠
帖 子:180
专家分:712
注 册:2011-2-1
第
4
楼
收藏
得分:4
这与运算符优先性有关,在参数传递之前,首先执行++p
然后再传参数
2012-03-24 22:01
举报帖子
使用道具
赠送鲜花
wsws23
等 级:
论坛游侠
帖 子:105
专家分:107
注 册:2012-3-13
第
5
楼
收藏
得分:4
本来我也想解释的 可大家都解释完了
2012-03-24 22:03
举报帖子
使用道具
赠送鲜花
liuxingar
等 级:
论坛游民
帖 子:22
专家分:43
注 册:2011-4-1
第
6
楼
收藏
得分:4
回复 3楼 Wikyo_hoho
能不能解释一下为什么:(*p++)+=123;同等于*p+=123;p++;
没看懂,麻烦了
2012-03-24 22:17
举报帖子
使用道具
赠送鲜花
nicum
等 级:
蝙蝠侠
帖 子:180
专家分:712
注 册:2011-2-1
第
7
楼
收藏
得分:0
后缀++的优先级低于+=
因此先计算+= 在计算++
因此一个表达式就可以扯开,这样更容易理解
2012-03-24 22:21
举报帖子
使用道具
赠送鲜花
7
1/1页
1
快速回复:
指针与数组的一个小问题
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.026900 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved