游客:  注册 | 登录 | 搜索 | 帮助
3s地带



标题: C++的函数问题
友联足坛
疾风
Rank: 4Rank: 4



UID 7652
精华 0
积分 370
帖子 149
现金 360
贡献值 0
阅读权限 40
注册 2007-8-24
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
疾风
Rank: 4Rank: 4



UID 7830
精华 0
积分 211
帖子 78
现金 201
贡献值 0
阅读权限 40
注册 2007-8-24
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:22 清除 Cookies - 联系我们 - 3S地带 - Archiver - WAP - 赣ICP备07006302号
Powered by Discuz! 5.5.0  © Processed in 0.025207 second(s), 6 queries , Gzip enabled