C++一个简单程序

主函数中 有这样的代码 void. function(double val); double val;function(val);cout<<val; 其中function的定义 void function(double val){val=3;} 为什么不是输出3???

因为你在执行void function(double val){val=3;} 这个函数的时候其实只main()函数val的值得的一个拷贝,这样说吧:
函数全是值传递。。参数都是传递原变量的值的一个 拷贝。不过你要弄明白传递的是什么值。

a,普通变量时值传递,嗯,没问题。你不能改变原来变量的值。
对于传值调用,是把实参的值传递给形参,此时形参是要被分配空间的,而你对形参做的任操作是不会改变实参的值的.

b,如果是指针,是指传递实参的地址,不为形参分配新的空间(其实个人认为,形参是有一个空间,用来保存实参的地址的), 这里对形参做的任何改变都会影响实参,使实参做相应的改变.

c,如果是引用,传递的也是一个地址,不过这个地址又解析过了的,所以能直接用,不用再加*去解析(地址值传递,用时已经解析了)。改变值同指针一样,不过不能改变地址就更明显了(引用其实是一个解析了的const 指针)

如果想改变主函数中val的值,那么用指针或者引用吧!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-19
很初级的问题
double val;
val=function(val);
cout<<val;

void function(double val)
{return 3;}

C++长时间没用过了,有点记不太清
还有种引用方法
double val;function(val);cout<<val;

void function(double &val)
{val=3;}本回答被网友采纳
第2个回答  2012-09-18
k
相似回答