分类: C/C++
2013-10-10 13:35:12
值传递:
形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,
不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。
指针传递:
形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作
C语言中没有引用传递
下面的代码对此作出了细致解释(从实参,形参在内存中存放地址的角度 说明了问题的本质,容易理解
点击(此处)折叠或打开
点击(此处)折叠或打开
可以看出,实参的地址为1080956420
采用值传递的时候,函数操作的地址是1080956448并不是实参本身,所以对它进行操作并不能改变实参的值
接下来是指针传递,也可发现操作地址是实参地址
指针传递的实质:
指针传递参数本质上是值传递的方式,它所传递的是一个地址值。值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,
即在栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的
任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。