博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++值传递与引用传递
阅读量:6153 次
发布时间:2019-06-21

本文共 892 字,大约阅读时间需要 2 分钟。

值传递:形参是对实参的拷贝,改变形参的值不会改变外部实参的值,从被调用的角度来说,值传递时单向传递(实参->形参),参数的值只能传入,不能传出。

当函数内部需要修改参数,并且不希望这个改变影响调用者时,才用值传递。

引用传递:形参相当于是实参的“别名”,对形参的操作实际上就是对实参的操作。所以被调用函数对形参做的任何操作都会影响主调函数中的实参变量。

#include
using std::cin;using std::cout;using std::endl;void swap(int a, int b){ int temp; temp = a; a = b; b = temp;}int main(){ int x=1; int y=2; swap(x,y); cout << x<
<< endl; return 0;}

运行上面的代码可以发现x和y的值没有交换。这是因为在主函数main中调用swap是通过值传递方式将x和y的值传递给a和b,在函数swap内部进行的是a和b的交换,并没有交互x和y。也就是值只是传入函数,但是没有传出。

#include
using std::cin;using std::cout;using std::endl;void swap(int &a, int &b){ int temp; temp = a; a = b; b = temp;}int main(){ int x=1; int y=2; swap(x,y); cout << x<
<< endl; return 0;}

 运行上面这段代码发现x和y的值进行了交换。这是因为函数swap的形成定义的是引用,在主函数中调用时,将x和a进行了绑定,将y和b进行了绑定,也就是交换a和b就相当于交换x和y.

 

转载于:https://www.cnblogs.com/fuhang/p/8630800.html

你可能感兴趣的文章
http协议组成(请求状态码)
查看>>
怎样成为一个高手观后感
查看>>
[转]VC预处理指令与宏定义的妙用
查看>>
JQuery radio单选框应用
查看>>
MySql操作
查看>>
python 解析 XML文件
查看>>
MySQL 文件导入出错
查看>>
java相关
查看>>
由一个异常开始思考springmvc参数解析
查看>>
向上扩展型SSD 将可满足向外扩展需求
查看>>
虚机不能启动的特例思考
查看>>
SQL Server编程系列(1):SMO介绍
查看>>
在VMware网络测试“专用VLAN”功能
查看>>
使用Formik轻松开发更高质量的React表单(三)<Formik />解析
查看>>
也问腾讯:你把用户放在什么位置?
查看>>
CSS Sprites 样式生成工具(bg2css)
查看>>
[转]如何重构代码--重构计划
查看>>
类中如何对list泛型做访问器??
查看>>
C++解析XML--使用CMarkup类解析XML
查看>>
P2P应用层组播
查看>>