函数的参数传递[1][2]:
- 在函数被调用时才分配形参的存储单元
- 实参可以是常量、变量或表达式
- 实参类型必须与形参相符
- 值传递是传递参数值,即单向传递
- 引用传递可以实现双向传递
- 传引用作参数可以保障实参数据的安全
引用的概念[1][3]:
- 引用(&)是标识符的别名
- 定义引用时,必须同时对它进行初始化,使它指向一个已经存在的对象
- 一旦引用被初始化后,就不能改为指向其他对象
- 引用可以作为形参
例子:
运行结果:x=10,y=5
参数的类型决定了形参和实参交互的方式:
- 形参是引用类型:形参将绑定到对应的实参上(引用传递(passed by reference)或者函数被传引用调用(called by reference))
- 其他:实参的值拷贝后赋给形参,形参和实参是两个相对独立的对象(值传递(passed by value)或函数被传值调用(called by value))
熟悉C的程序员常常使用指针类型的形参访问函数外部的对象,但在C++语言中,建议使用引用类型的形参替代指针 [4]。
使用引用传参的优点:
- 避免拷贝
- 返回额外信息
参考
- ^abhttp://www.xuetangx.com/courses/course-v1:TsinghuaX+00740043X_2015_T2+sp/pdfbook/0/
- ^http://www.xuetangx.com/courses/course-v1:TsinghuaX+00740043X_2015_T2+sp/courseware/e10b913bad0548cabe292da7b4818523/686fab8a8dad41afb00bc176cef6ec1e/
- ^http://www.xuetangx.com/courses/course-v1:TsinghuaX+00740043X_2015_T2+sp/courseware/e10b913bad0548cabe292da7b4818523/5593efc744144b638892389615b97f73/
- ^斯坦利·李普曼,约瑟·拉乔伊,芭芭拉·默,等. C++ Primer中文版:第5版[M]. 北京: 电子工业出版社, 2013: 188.