C++引用

 int ival = 1024;

int  &refVal = ival; //refVal指向ival;

int &reVal1;//错误,引用必须被初始化;

C++primer中说道:{一般初始化变量的时候,初始值被拷贝到新建的对象中,但是在定义引用的时候,程序是把引用和它的初始值绑定在一起,而不是将引用值拷贝给引用,一旦初始化完成,引用将和他的初始值对象绑定在一起,因为无法令引用重新绑定到另外一个对象,因此引用一定要初始化。}

引用只能和初始值对象绑定在一起,不能再重定义绑定到其他的地址上,一个变量可以有多个引用,因为是同一个地址,所以对其中一个引用赋值如:

int ival = 0;

int &refVal = ival;

refVal =1;

这样最终ival的值也会变成1;

而且引用和它所绑定的对象必须是同样的类型,我尝试将float引用绑定到int对象上,虽然int的对象初始化是0,但结果失败编译报错,因为不同数据类型内存分配的大小不一样,所以就算是0,其在内存中所占大小也不一样。

我尝试将引用初始化的时候绑定到另一个引用上,结果成功输出,abc都是0,可见,引用c是可以用引用b初始化的,但是前提是引用b必须也初始化

int a = 0;
    int &b = a;
    int &c = b;

像引用的用法,可以想象,之前的时候用c语言将主函数中变量传值到函数以改变变量的值需要return,或者传递指向变量地址的指针,但是c++的引用就方便多了,可以直接在函数中引用变量,这样不需要指针也不需要return就可以改变主函数变量的值了,用作业题举个例子:

#include<iostream>
using namespace std;
void ok(int &x1,int &x2,int &x3){
    if(x1<x2){
        int change=x1;
         x1=x2;
         x2=change;
    }
    if(x1<x3){
        int change=x1;
         x1=x3;
         x3=change;
    }
    if(x2<x3){
        int change=x2;
         x2=x3;
         x3=change;
    }
}
int main(){
    int a,b,c;
    cin >>a>>b>>c;
    ok(a,b,c);
    cout <<a<<">"<<b<<">"<<c<<endl;
    return 0;
}

结果就是,主函数中abc的值互换成从大到小排列。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值