C++初级指针例题一道,谢谢大家~!!
#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:***********