C++引用怎么理解?

来源:百度知道 编辑:UC知道 时间:2024/05/25 17:28:53
列一:
#include<iostream.h>
void swap(int x,int y);
int main()
{
int a=2,b=3;
swap(a,b);
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
return 0;
}
void swap(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
\\ a=2 b=3
列二:
#include<iostream.h>
void swap(int &x,int &y);
int main()
{
int a=2,b=3;
swap(a,b);
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
return 0;
}
void swap(int &x,int &y)
{
int temp;
temp=x;
x=y;
y=temp;
}
\\a=3 b=2
列一为什么没有交换成功?swap(x,y) 函数中,x,y对应的是a=2,b=3.为什么不能交换?列二中swap(&x,&y)函数对应的是也是a=2,b=3。为什么交换成功,很费解啊。麻烦大家给解释个明白。。
本人刚学,希望大家不吝相告,非常感谢!

列一的函数:swap(x,y) 是一个简单的 "值传递"参数函数
所谓值传递:就是: 系统把你传进来的 a,b 在内在里面重新 拷贝了一份 相当于在函数里面系统分配了 x,y, 这两个数 x,y的值和 a,b 是一样的,a,b和x,y和关系仅此而已 所以,你对,x,y 运算并不会影响到a,b

列二的函数
void swap(int &x,int &y)
这是"引用类型参数", 引用类型 类似于指针 简单点说吧
当你用这个函数传进:a,b , x,y 此时因为是 "引用类型" 所以,此时的x,y在函数体内的运算完全等价于a和b在运算.所以这个函数能改变参数的值.

说这么多,希望你能明白!

楼主你好,我帮你改好了`在VC++6.0下编译成功!
==================================
1.
#include<iostream>
using namespace std;
void swap(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
cout<<"a:"<<x<<"\n"<<"b:"<<y<<endl;
}
void main()
{
int a=2,b=3;
swap(a,b);
} //输出a:3
b:2
=======================================
2.所谓变量的引用其实就是别名~(指针另说了)相当于说,你本名叫小明,你有个外号叫小胖,但是别人喊小胖时其实就是在喊你~

希望能帮上你~

这个问题我帮你理解下吧
第一个程序中函数形参是int x,int y,在调用函数的