引用的例子 C C++ 中区别

引用到底有什么用?~[@more@]

#include
using namespace std;
void swap (int &x,int &y);
int main()
{
int a=2,b=3;
swap (a,b);
cout < cout < return 0;}
void swap (int &x,int &y)
{
int temp;
temp=x;
x=y;
y=temp;
}
为什么上面的可以交换,下面的就不可以了呢?
#include
using namespace std;
void swap (int x,int y);
int main()
{
int a=2,b=3;
swap (a,b);
cout < cout < return 0;}
void swap (int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}

在C/C++调用函数时, 如果函数有参数, 这时C/C++使用的是传值的方式, 而不是VB里的传址的方式.比如函数:
void swap(int a, int b) {int temp=b; b=a; a=temp;}
该函数看起来是用来交换a和b的值的, 但是如果有代码:
void main() {int a=2, b=3; swap(a,b);}执行完该函数以后a仍然是2, b仍然是3, 也就是说a和b的值并没有交换. 为什么哪? 这就是"传值"的方式. 也就是说调用该函数时, swap所操作的a和b并不是main函数里的a和b, 而是另外在堆栈上申请了一块内存, 只是把main函数里的a和b复制过来了. 因此在swap函数里无论对a和b做什么操作都不会影响到main里的a和b的.
如果是在VB里, 那么swap函数内部的a和b和main函数里的a和b是同一块内存, 执行完swap(a,b)后,a=3,b=2;

如果想要达到swap(a,b)后a=3,b=2在C语言里只有使用指针来现. 但指针不易操作, 且容易出错. 因此C++里定义了引用类型, 如果变量声明为引用, 那么函数便为"传址", 也就达到了swap交换的目的.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8780503/viewspace-1034210/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8780503/viewspace-1034210/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值