为了账号安全,请及时绑定邮箱和手机立即绑定

C++形参前面的&

C++形参前面的&

C++
浮云间 2019-02-18 13:08:28
#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语言里面 是不用写&的吧?
查看完整描述

2 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞


1

2

3

4

5

6

7

8

9

10

11

12

oid order(int &x,int &y)    //这是C++中为了避免使用C指针的一种类型,叫引用 就是int&

{    //引用就是一个变量的别名,比如调用order(a,b); 这里的x就是a的一个别名,访问x就是访问a

    //C语言中要实现交换变量的值必须传递指针相应的函数头就是void order(int* x, int* y);而调用

    //就变成了order(&a, &b); 这里的&符号所在的地方不一样C++是形参,C是实参

int temp;

if(x>y)

 {

  temp=x;

  x=y;

  

y=temp;

}


 

 


查看完整回答
反对 回复 2019-02-24
?
MM们

TA贡献1886条经验 获得超2个赞

C++里引用就是这么用的。
C里面这里要用指针,而且要用order(&a, &b); 来调用函数。

查看完整回答
反对 回复 2019-02-24
  • 2 回答
  • 0 关注
  • 501 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信