函数传参的三种方式

以一个简单的两个数的交换来说说参数传递:

1.值传递

值传递即把实参的值传给形参,只会改变形参的值不会改变实参的值,在主函数中定义一个x=1,y=2,进行swap(x,y),结果如下:

void swap(int a,int b)
{
int temp=a;
a=b;
b=temp;
}

通过监视窗口可以得知交换后a=2,b=1,而x=1,y=2不变。

 

2.地址传递

地址传递即把实参的地址传过去,由于地址也是一个变量,因而直接改变地址不会对实参的地址产生影响,因而可以通过改变值来改变指针所指向的值,如下:

 

void swap(int *a,int *b)
{
int temp=*a;
*a=*b;
*b=temp;
}

得出结果,开始x的地址为90,y地址为84,后面地址没有发生变化,只改变了值。

 

3.引用传递

void swap(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}

得出结果,形参的值发生改变,实参也相应发生改变。

从以上可以得出引用相当于是对实参自身进行操作~~

posted @ 2017-07-14 16:20  gyq无敌  阅读(633)  评论(0)    收藏  举报