因为你在执行void function(double val){val=3;} 这个函数的时候其实只main()函数val的值得的一个拷贝,这样说吧:
函数全是值传递。。参数都是传递原变量的值的一个 拷贝。不过你要弄明白传递的是什么值。
a,普通变量时值传递,嗯,没问题。你不能改变原来变量的值。
对于传值调用,是把实参的值传递给形参,此时形参是要被分配空间的,而你对形参做的任操作是不会改变实参的值的.
b,如果是指针,是指传递实参的地址,不为形参分配新的空间(其实个人认为,形参是有一个空间,用来保存实参的地址的), 这里对形参做的任何改变都会影响实参,使实参做相应的改变.
c,如果是引用,传递的也是一个地址,不过这个地址又解析过了的,所以能直接用,不用再加*去解析(地址值传递,用时已经解析了)。改变值同指针一样,不过不能改变地址就更明显了(引用其实是一个解析了的const 指针)
如果想改变主函数中val的值,那么用指针或者引用吧!
温馨提示:答案为网友推荐,仅供参考