紫悦公主和阿坤生孩子:C++初级指针例题一道,谢谢大家~!!

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/03 05:59:04
#include<iostream.h>
float f(float sum,float x[],int n)
{
for(int i=0;i<n;i++)sum+=x[i];
return sum/n;
}
void main(void)
{
float x[]={2,4,6,8},
sum=0,y;
y=f(sum,x,4);
cout<<sum<<'\n'<<y<<endl;
}
输出的结果是0 5
是不是sum是实参?值传递 实参不变 但是 y不也是实参吗?既然sum输出为0了 那么y为什么不是0? 谢谢了~

注意:
1.自定义函数中的变量sum和main函数中的sum是不一样的,也就是说,你其中一个sum改成别的字母也可以。
2.函数都有作用域和生命期,也就是说自定义函数f,在其调用结束的时候,
自定义中的变量的生命就此终结(包括sum,x[],n),但只有return后面的被返回出来,打个比方,在f生命将尽的时候,只把sum/n留了下来,其余变量都难逃噩运。
举个例子:
#include<iostream.h>
float f(float sum,float x[],int n)
{
for(int i=0;i<n;i++)sum+=x[i];
cout<<sum;//这时输出的结果是20,因为这个sum在函数f中,是f中的sum.
return sum/n;
}
void main(void)
{
float x[]={2,4,6,8},
sum=0,y;
y=f(sum,x,4);
cout<<sum; //输出结果是0,这个sum是main函数中的变量,在main函数中有效
}

希望你能理解
QQ:547758555

这跟指针有关系?
sum传值,所以值不会变(在f函数里sum的值变,但不影响main函数里的sum)。y=f(sum,x,4); 将算出来的sum/n赋给了y,所以y的值变了。

sum是值传递的,所有main函数中的变量值不变;
y是函数值,y=f(sum,x,4);是把函数值赋值给y,当然y的值变化;相当于;y=5;

在你的函数f()中,sum是形参,他的改变不会影响在main里的sum。在调用f()时,只是将sum的值传递过去。sum的值不变。但y 等于f()的返回值,他的值是f()中的sum/n。结果是5。y 是实参,但他是在main里调用的。如果y 是在f()中改变的话,那就不会改变在main里的值。

改成float f(float &sum,float x[],int n)