摘要: 本篇博客仅作为笔记,如有侵权,请联系,立即删除(网上找博客学习,然后手记笔记,因纸质笔记不便保存,所以保存到网络笔记)。
一般来说C++参数传递有三种方式:值传递、指针传递、引用传递。
一、值传递
值传递是最常见的一种参数传递方式,但是对初学者来说也最容易出错。
#include<iostream> using namespace std; void fun(){ int tmp; tmp = a; a = b; b = tmp; } void main(){ int m,n; m = 1; n = 1; fun(m,n); cout << m << " " << n << endl; //输出1、2 }
值传递只传m和n的副本,交换函数并没有体现出来。
二、指针传递
使用指针传递需要先了解一下指针的相关概念。
#include<iostream> using namespace std; void fun(int *x){ *x += 10; } void main(){ int n = 10; fun(&n); cout << n << endl; //输出结果为10 }
fun()函数体内的x是指向外部变量n的指针,改变指针的内容将导致n的值改变,所以n的值成了10.
三、引用传递
引用相当于别名(绰号)。
#include<iostream> using namespace std; void main(){ int x; int &y = x; y = 99; cout << x << endl; //输出结果为99 }
程序中&y = x应当理解为y具有x的地址,即x与y具有相同的地址,地址相同了当然内容也相同,所以y = x = 99。
比较:对比参数的三种传递方式,可以发现“引用传递”和“指针传递”的性质一样。引用传递可以做的任何事指针也能够做到,因为指针能够毫无约束地操作内存中的东西,这种强大的功能背后也必将隐藏着巨大的危险,所以要谨慎运用。