C++形参前面的&

#include "stdafx.h"
#include "iostream"
using namespace std;
void order(int &x,int &y)
{
int temp;
if(x>y)
{
temp=x;
x=y;
y=temp;
}
}
void order(int &x,int &y,int &z)
{
int temp;
if(x>y)
{
temp=x;
x=y;
y=temp;
}
if(y>z)
{
temp=y;
y=z;
z=temp;
}
if(x>z)
{
temp=x;
x=z;
z=temp;
}
}

int _tmain(int argc, _TCHAR* argv[])
{
int a=4,b=1,c=2;
cout<<a<<','<<b<<"排序后为:";
order(a,b);
cout<<a<<','<<b<<endl;

cout<<a<<','<<b<<','<<c<<"排序后为:";
order(a,b,c);
cout<<a<<','<<b<<','<<c<<endl;
return 0;}
问题是:void order(int &x,int &y)为什么要有&呢?如果没有的话 就不对了 在C语言里面 是不用写&的吧?

浮云间
浏览 502回答 2
2回答

繁星点点滴滴

123456789101112oid&nbsp;order(int&nbsp;&x,int&nbsp;&y)&nbsp;&nbsp;&nbsp;&nbsp;//这是C++中为了避免使用C指针的一种类型,叫引用&nbsp;就是int&{&nbsp;&nbsp;&nbsp;&nbsp;//引用就是一个变量的别名,比如调用order(a,b);&nbsp;这里的x就是a的一个别名,访问x就是访问a&nbsp;&nbsp;&nbsp;&nbsp;//C语言中要实现交换变量的值必须传递指针相应的函数头就是void&nbsp;order(int*&nbsp;x,&nbsp;int*&nbsp;y);而调用&nbsp;&nbsp;&nbsp;&nbsp;//就变成了order(&a,&nbsp;&b);&nbsp;这里的&符号所在的地方不一样C++是形参,C是实参int&nbsp;temp;if(x>y)&nbsp;{&nbsp;&nbsp;temp=x;&nbsp;&nbsp;x=y;&nbsp;&nbsp;y=temp;}&nbsp;&nbsp;

MM们

C++里引用就是这么用的。C里面这里要用指针,而且要用order(&a, &b); 来调用函数。
打开App,查看更多内容
随时随地看视频慕课网APP