引用传参和指针传参的差别.

        在C++中,如果函数的实参的类型是数据类型比较大的数据类型,这是如果使用一般传参就会有很大的不方便,这是如果能够传递一个地址或者是对原来参数的一个引用对提高性能会有很大的帮助。

         本文研究一下引用传参和指针传参的区别和联系。其实引用传参和指针传参都能够在条用函数内部对源数据进行修改,这是它们的共同点,但是它们也是有区别的。下面是一个例子:


#include <iostream>



using namespace std;


void SwapByPoint(int* x,int* y);      //指针传参函数的声明


void SwapByReference(int &x,int &y);   //引用传参函数的声明

int main()


{

         int x = 3;

         int y = 5;

         cout<<"转化前: x="<<x<<" y="<<y<<"/n";

        SwapByPoint(&x,&y);    //如果这里使用 SwapByPoint(x,y) 则报错:cannot convert parameter 1 from 'int' to 'int *'

         cout<<"指针传参转换后:x="<<x<<" y="<<y<<"/n";

         SwapByReference(x,y); //如果这里用SwapByReference(&x,&y) 则报错 cannot convert parameter 1 from 'int *' to 'int &'

         cout<<"引用传参调用转换后:x="<<x<<" y="<<y<<"/n";
         system("pause");
         return 0;

}

/*交换函数 使用指针传参*/

void SwapByPoint(int *x,int *y)
{
         int temp = *x;
         *x = *y;
         *y = temp;

}

/*

使用引用传参
*/

void SwapByReference(int &x,int &y)
{

int temp = x;
x = y;
y = temp;
}

指针传参和引用传参的效果是一样的。

它们的差别个人认为:

Ø 指针传参传递的是一参数(这里是Int实参)的地址,这样,虽然实参和形参不一样,但是它们只想的地址是一样的,所以对相同地址的数的操作会影响到原来的数。

Ø 引用传参传递的是一个参数本身,但是在调用函数中,把保存它们的地址的值做了交换。

两种传参方式的调用必须是上述这样的,否则会报错,在相应的代码中有提示….


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值