C++传值调用与引用调用的区别
2014-03-15 23:43
423 查看
简单来说,传值调用就是指当一个函数被调用时,C++根据实参和形参的对应关系将实参的值一一复制给形参,即实参的值单向传递给形参。函数本身不对实参进行任何操作,即使形参的值在函数中改变,实参的值也不会受到影响。
引用调用过程中,被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被掉函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的参数变量。
引用传递方式是在函数定义时在形参前面加上引用运算符‘&’。在函数被调用时,参数传递的内容不是实参的值,而是实参的地址,即将实参的地址放到C++为形参分配的内存空间中,因此形参的任何操作都会改变相应实参的值。
引用调用过程中,被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被掉函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的参数变量。
引用传递方式是在函数定义时在形参前面加上引用运算符‘&’。在函数被调用时,参数传递的内容不是实参的值,而是实参的地址,即将实参的地址放到C++为形参分配的内存空间中,因此形参的任何操作都会改变相应实参的值。
相关文章推荐
- C++中传值、传址与传引用的区别
- c/c++ 中的传值调用和传引用
- C语言形参和实参,传值调用和引用调用的区别
- C++ Data Structure 学习笔记 (2011.5.3)——传值,指针,引用的区别及Vector与String的详细用法
- Java中的形参和实参的区别以及传值调用和传引用调用
- Java中的形参和实参的区别以及传值调用和传引用调用
- C++和JAVA中一些区别,包括指向子类的引用会调用谁的方法,子类构造函数自动调用父类构造函数时,父构造会调用的谁方法
- C++之传值调用和引用调用
- Java中的形参和实参的区别以及传值调用和传引用调用
- C++-传值与传引用的区别
- C++中引用和指针的区别
- 5. Java引用与C++区别
- java中的引用和C++中的指针的区别
- C++引用与指针的区别
- 在PHP中传值与传引用的区别
- C++传值、引用和指针的区别
- C++ 调用lib 和 dll的 方法 及 动态库DLL与静态库lib的区别
- C++ 引用调用
- C++指针与引用的区别
- c#中函数调用的按值传递和按引用传值