C++引用、引用传参 、常量引用、引用在函数参数和输出中

函数的形参的一种方式

引用:变量的一种别名。是某个已经存在变量的另一个名字

相对于指针,指针可以修改指向,但是引用不行

对于变量A创建一个别名B,创建后不可以更改,若更改则指向到其他内存区域,引用必须初始化,不可以为空。

int & num2 = nullptr;//错误!,不可以赋值为空

int a = 10 ;

int & b = a ;

对a 或者b进行赋值更改,另一方也会变

但是不可以后期从一个变量的引用变成另一个变量的引用

在使用的时候&才是取值符,在定义的时候代表引用

引用其实类似指针,指向某块区域的值,只是指针可以转移,引用不可以,他们值的地址其实是同一个内存地址。

值传递对函数外部的实参没有影响

但是地址传递有影响

引用传递省去了地址传递的复杂操作:

同时对外部的实际参数产生影响

由于引用不是指针,不对内存操作,不涉及内存安全

引用作为返回值:

int & test (int a ){

         static int a = 10;  //在全局区

        return a ;  //返回引用变量

}

int main(){

        int &ref = test();        //同样使用引用符接收

        cout <<ref <<endl;   //使用时直接写变量 ,输出10

        test()=1000;          //函数可以直接作为左值,此时a就是1000,ref又引用了a,则ref也是1000

        cout <<ref <<endl;         //引用所绑定的变量同样影响 , 输出1000;

}

引用的本质:

引用的本质是一个const指针,指向的地址不可以变(引用初始化后不可更改),内容可以变(被引用的变量和引用变量本身一起变)

void func(int & ref ){          //等同于 int * const ref  =&a ;

        ref=100;        //等同于 *ref = 100

}

int main(){

        int a  =10;

        int & ref = a ; //写成指针:等同于 int *  const ref = &a ;

        ref =20;        //写成指针:等同于*ref = 20;

        cout <<ref <<endl;//  20

        func(a);

        return 0;

}

const也可以修饰引用,称为常量引用,主要来修饰形参,防止形参改变实参(等同于指向const的const指针:值和地址均不可改变)

void showvaluie (const int & v ){

        v  = 10000;//报错!此处给v赋值会给外部的实参值造成影响改变,加了const防止类似误操作

        cout <<v <<endl;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值