游客:
注册
|
登录
|
搜索
|
帮助
3s地带
»
软件应用
» C++的函数问题
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题: C++的函数问题
友联足坛
疾风
UID 7652
精华 0
积分 370
帖子 149
现金 360
贡献值 0
阅读权限 40
注册 2007-8-24
楼主
大
中
小
发表于 2007-9-22 14:51
资料
个人空间
短消息
加为好友
C++的函数问题
#include<iostream.h>
int fun(int *);
void main()
{
int temp=1;
int str[10]={0,1,2,3,4,5,6,7,8,9};
temp=fun(&str[1])*temp;
cout<<temp<<endl;
}
int fun(int *p)
{
int b=2;
b=*(p++)*b;
return b;
}
为什么输出的是2?不是4呢??
b=*(p++)*b;是什么意思?
v1H
疾风
UID 7830
精华 0
积分 211
帖子 78
现金 201
贡献值 0
阅读权限 40
注册 2007-8-24
沙发
大
中
小
发表于 2007-9-22 14:51
资料
个人空间
短消息
加为好友
b=*(p++)*b;这个语句说白了就是
b = *p * b;p = p+1;
这下你应该明白了吧
执行b=*(p++)*b;其实是先读取 p 所指向的内容(即*p, 此时的值还是 1 ),再运算p+1 ,所以才有 b = 1*2 = 2
所以函数的返回值是 2 自然输出来的也是 2*1 = 2
补充:
请分清楚 p++; 和 ++p 的区别:
对于*(p++) 它是相当于 *p; p= p+1;它是在取出p所指向的内容之后才自增的.千万不要被括号所误导,认为有了括号就要先算括号内的.括号只是为了区分开*p++(p所指向的内容自加) 和 *(p++)(取出p所指向的内容之后使p 指向p 的下一个单元.
而*(++p) 就是你所理解的那样,取出p 的下一个单元的内容.
在大数教材都应该有写到,
i++; 是在使用完i 之后再使i加1
++i 是i 加1之后 再使用i
你这个程序就最好的例子. 在使用完p (求 *p 的值)之后,再让 p 加1
投票
交易
悬赏
活动
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
个人空间管理
升级个人空间
当前时区 GMT+8, 现在时间是 2009-1-9 15:25
清除 Cookies
-
联系我们
-
3S地带
-
Archiver
-
WAP
-
赣ICP备07006302号
界面风格
----------
DST_lovelylook
默认风格
D5MSNCool
Powered by
Discuz!
5.5.0
©
Processed in 0.024834 second(s), 6 queries , Gzip enabled