c++之参数传递
来源:互联网 发布:匿名免费发短信软件 编辑:程序博客网 时间:2024/06/11 15:57
通常使用的“按指传递”,函数内的操作的实际上是输入参数的一个副本(即函数创建了一个临时变量,其值与输入参数完全相同),对该副本的操作不会影响输入参数的值。而“按引用传递”,可以理解为副本是一个引用变量,该副本与输入参数共享存储区。因此函数内对副本的修改相当于对输入参数进行修改。
当输入参数是抽象数据类型时,采用“按引用传递”可以避免创建副本时构造函数的调用(以及函数返回时析构函数的调用)。因此按引用传递会比按值传递更有效率。
注意:“按引用返回”,对于返回值有一定的限制:即返回值不能是局部变量,必须能生存在函数作用域之外。譬如:
例子:
当输入参数是抽象数据类型时,采用“按引用传递”可以避免创建副本时构造函数的调用(以及函数返回时析构函数的调用)。因此按引用传递会比按值传递更有效率。
注意:“按引用返回”,对于返回值有一定的限制:即返回值不能是局部变量,必须能生存在函数作用域之外。譬如:
例子:
int & f(int& a){int b = a;b++;return b;}会出错,因为b是局部变量,引用返回值必须可以再在调用函数外生存。
下面是个完整的案例说明参数按值传递和按引用传递的区别:
0 0
- C语言函数参数传递之痛
- C&C++语言之可变参数传递
- C语言函数参数传递之痛
- C语言函数参数传递之痛
- C语言之传递可变参数
- C基础----函数参数传递之值传递
- C/C++--参数传递
- C语言之旅(5)参数传递(值传递,指针传递,数组传递)
- c语言之函数参数传递之数组篇
- C#中的参数传递
- C#中的参数传递
- C#中的参数传递
- C#中的参数传递
- C#参数传递
- c语言参数传递
- C语言参数传递
- c#--参数传递
- C参数传递
- 排序算法--快速排序
- Python--ZOJ1049
- Excel内文本型日期更改格式
- Java4Android学习十六 - equals()、hashCode()、toString()
- 内存管理小结
- c++之参数传递
- linux常用命令2
- Linux mmap
- 一些线程相关的问题
- grub启动命令行学习(一)
- UVa 246 - 10-20-30 [STL应用]
- iOS项目上传到AppStore步骤流程
- OSG下的引用计数指针(Reference Pointers)的理解
- 【8】香干炒肉丝