C++ 引用

引用的本质

是一个指针常量,一旦初始化后, 即不能发生改变 ,数据类型为int* const

c++推荐使用引用,因为语法方便,所有关于指针的操作由编译器完成

void func(int& ref)
{
    ref = 100; // ref是引用,编译器转换为 *ref = 100
}

int main()
{
    int a = 10;  
    int& ref = a; //自动转换为 int* const ref = &a
    ref = 20; // 转换为 *ref = 20,通过ref修改a
   	func(a); // 传入指针常量,通过解引用 *ref = 100 修改 a = 100
    return 0;
}

常量引用

常量引用主要用来修饰形参,防止误操作

//打印数据函数
void showValue(int &val)
{
    val = 1000; //误操作,修改了值
    cout << "val:" << val <<endl;
}

void showValue(const int &val)
{
    val = 1000; //错误,表达式必须是可修改的左值
    cout << "val:" << val <<endl;
}

int main()
{
    
    int a = 10;
    int& ref = 10; //引用必须引用一块合法的内存空间
    const int& ref = 10; 
    //加上const之后,编译器修改为int temp = 10; const int& ref =temp;
    //ref 加上const之后,变为只读,无法修改
    
    //函数中利用常量引用防止误操作修改实参
    int a = 10;
    showValue (a); 
    //避免了值传递的拷贝副本造成空间浪费
    //同时避免了指针传递或引用传递误操作修改实参
    
    return 0
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值