通常来讲C++中参数传递有三种方式:值传递、指针传递、引用传递ios
1.值传递——传值函数
值传递是最多见的一种参数传递的方式,可是对初学者来讲也最容易出错。以下例:spa
#include<iostream.h> void fun(int a,int b) { int temp; temp=a; a=b; b=temp; } void main() { int m,n; m=1; n=2; fun(m,n); cout<<m<<""<<n<<endl; //输出结果为 12 }
例子中fun()函数采用值传递的方式,传入的实参其实是m、n的副本而非其自己,因此对副本的改变并不会反映到m、n自己上。指针
2.指针传递——传指针code
使用指针传递须要先了解一下指针的有关概念,由于这里主要介绍关于参数的部分,因此废话很少说了,直接看例子:blog
#include<iostream.h> void fun(int * x) { *x+=10; } void main() { int n=0; fun(&n); cout<<n<<endl; //输出结果为 10 }
fun()函数体内的x是指向外部变量n的指针,改变指针的内容将致使n的值得改变,因此n的值成为了10。ip
3.引用传递——传引用内存
引用至关于别名(绰号),比方说有人的名字是王小丽,她的绰号是“小小”。若是有人说“小小”几岁,实际上就是指王小丽几岁。io
#include <iostream.h> void main() { int x; int &y=x; //变量引用 y=99; cout<<"x="<<x<<endl; //输出结果为 x=99 }
程序中&y=x应当理解为y具备x的地址,即x与y具备相同的地址,地址相同了固然内容也相同了,因此y的值是99。
比较:class
对比参数的三种传递方式,能够发现“引用传递”和“指针传递”的性质同样,而书写方式像“值传递”。引用传递能够作的任何事指针也可以作到,由于指针可以毫无约束地操做内存中的东西,这种强大的功能背后也必将隐藏着巨大的危险,因此慎用指针。