C++中函数参数值的三种传递方式总结有:值传递、地址传递、引用传递。
第一种:值传递,特点:不会改变主函数中的实参。
调用子函数时把主函数中实参的值传递给子函数的形参,在子函数中完成对应的操作。此时,子函数中的所有操作都是对形参来进行的,因此主函数中的实参不受子函数的影响,不会改变实参的值。
#include<iostream>using namespace std;void Swap(int a,int b){ int temp=a; a=b; b=temp;}int main(){ int a=10,b=20; Swap(a,b); cout<<a<<" "<<b<<endl; return 0;}
以上程序运行后的结果是 10 20; a b变量的值并未发生改变。
第二种:地址传递 特点:改变主函数中实参的值
调用子函数时把主函数中实参的地址传递给子函数的形参(此时子函数的形参用指针来接收实参的地址)。因此,此时子函数是直接对实参的地址所指向的内存空间进行操作的,故可以改变的实参的值!
即使子函数调用结束后形参被释放,但由于子函数的操作是直接对实参变量指向的地址操作的,形参指针指向主函数实参的地址,故在对形参进行操作时也同时对实参进行了相同的操作。
#include<iostream>using namespace std;void Swap(int *a,int *b){ int temp=*a; *a=*b; *b=temp;}int main(){ int a=10,b=20; Swap(&a,&b); cout<<a<<" "<<b<<endl; return 0;}
以上程序运行后的结果是 20 10 ;a b的值进行了交换。
第三种:引用传递 特点:改变主函数中实参的值
引用作为函数参数的优势是可以达到与地址传递相同的效果且简化代码和语法。
引用的相关知识如下:
引用的作用: 给变量取别名
引用的语法:数据类型 &别名 = 原名 (数据类型要与原变量一致)
引用的注意事项:必须初始化、初始化后不可更改(不能再做其他变量的别名)
当引用作为函数参数时, 调用子函数时把主函数中实参名称(原名)所指向的内存取一个别名(也就是子函数的形参),即别名和原名都指向同一段内存空间。因此,在子函数中对形参操作是直接对实参的内存进行操作,从达到了在子函数中操作实参的效果!且该写法简化代码书写!
#include<iostream>using namespace std;void Swap(int &a,int &b){ int temp=a; a=b; b=temp;}int main(){ int a=10,b=20; Swap(a,b); cout<<a<<" "<<b<<endl; return 0;}
以上程序运行后的结果是 20 10 ;主函数中a b的值经过子函数进行了交换。
最后更新时间:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。