我是靠谱客的博主 虚幻小蜜蜂,这篇文章主要介绍C/C++函数参数传递时值传递、指针传递、引用传递的区别是什么?,现在分享给大家,希望可以做个参考。

值传递:形参是实参的副本(复制、拷贝),形参值的改变不会影响实参的值,大家初学函数时接触到的第一个传参例子都为这种。

指针传递:形参是指针类型,形参作指针运算后指向的就是实参,所以会影响实参的值。

引用传递:在调用函数时将实参的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实参的值。

引用传递与指针传递的区别:
引用传递是把实参的内存引用空间(所谓引用空间,即数据在内存中的地址)传递给形参,形参与实参具有相同的引用空间,引用传递在函数定义和调用时并没有用到指针运算符
而指针传递传递的是指针值,实参和形参都是指针,指针传递时要用到指针运算符进行相关数据的操作指针操作是容易出问题的,所以通常我们能避免指针操作就避免指针操作,所以通常我们用的都是值传递和引用传递

下面对三种情况分别举例

值传递的例子

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void swap(int a,int b)//形参也可以是对象之类的哦 { int temp; temp=a; a=b; b=temp; cout<<a<<’ ‘<<b<<’n’; } int main(){ int x=1; int y=2; swap(x,y); cout<<x<<’ ‘<<y<<’n’; return 0; }

运行结果是2,1 和1,2,函数swap()没有改变实参x、y的值。

指针传递的例子

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void swap(int *a,int *b) { int temp; temp=*a; *a=*b; *b=temp; cout<<*a<<’ ‘<<*b<<’n’; } int main(){ int x=1; int y=2; swap(&x,&y); cout<<x<<’ ‘<<y<<’n’; }

运行结果是:2,1和2,1,函数swap()改变了实参x、y的值。

引用传递的例子

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void swap(int &a,int &b) { int temp; temp=a; a=b; b=temp; cout<<a<<’ ‘<<b<<’n’; } int main(){ int x=1; int y=2; swap(x,y); cout<<x<<’ ‘<<y<<’n’; return 0; }

运行结果是:2,1和2,1,函数swap()改变了实参x、y的值。

扩展阅读:

为什么引用传递的参数名前通常都用const作了修饰?​​​​​​​


 

最后

以上就是虚幻小蜜蜂最近收集整理的关于C/C++函数参数传递时值传递、指针传递、引用传递的区别是什么?的全部内容,更多相关C/C++函数参数传递时值传递、指针传递、引用传递内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部