本文转载自: http://www.cnblogs.com/yanlingyin/
1 | 值传递 | 不能改变实参变量的值 |
形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出。 |
2 | 引用传递 | 可以改变实参变量的值 |
形参相当于是实参的“别名”,对形参的操作其实就是对实参的操作。 在引用传递过程中,被调函数的形式参数虽然也作为局部变量在栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。 被调函数对形参的任何操作都被处理成间接寻址,即通过栈中存放的地址访问主调函数中的实参变量。 |
3 | 指针传递 | 可以改变实参变量的值 |
指针传递参数本质上是值传递的方式,它所传递的是一个地址值。 值传递过程中,被调函数的形式参数作为被调函数的局部变量在栈中开辟了空间,以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。 值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。(这里是在说实参指针本身的地址值不会变) |
时间: 2024-09-28 17:57:11