2.C++的引用

文章目录

  • 2.1 引用的基本使用
  • 2.2 引用注意事项
  • 2.3 引用做函数参数
  • 2.4 引用做函数返回值
  • 2.5 引用的本质
  • 2.6 常量引用

2.1 引用的基本使用

作用:给变量起别名

语法:数据类型 &别名 = 原名

int a=10;
int &b =20;
b=20;
cout<<a<<endl;
//输出结果为20

2.2 引用注意事项

引用必须要初始化

int &b;//错误

引用一旦初始化后,就不能更改了

2.3 引用做函数参数

作用:函数传参时,可以利用引用的技术让参数修饰形参

优点:可以简化指针修改实参

#include<iostream>     
using namespace std;

//值传递 
void myswap1(int a,int b){
        int temp=a;
        a=b;
        b=temp;
} 

//地址传递
void myswap2(int *a,int *b){
        int temp=*a;
        *a=*b;
        *b=temp;
} 

//引用传递
void myswap3(int &a,int &b){
        int temp=a;
        a=b;
        b=temp;
} 

int main(){
        int a=10;
        int b=20;
        
        myswap1(a,b);//值传递,形参不会修饰实参
        cout<<"a="<<a<<" "<<"b="<<b<<endl; 
        
        myswap2(&a,&b);//地址传递,形参会修饰实参 
        cout<<"a="<<a<<" "<<"b="<<b<<endl;
        
        myswap1(a,b);//引用传递,形参会修饰实参
        cout<<"a="<<a<<" "<<"b="<<b<<endl;
        return 0;
}

结果:

总结:通过引用参数产生的效果同按地址传递是一样。

2.4 引用做函数返回值

注意:

  1. 不要返回局部变量的引用

  2. 函数的调用可以作为左值

#include<iostream>     
using namespace std;

//错误示范 返回局部变量 
//void test1(){
//        int a=10;//存放在栈区
//        return a; 
//} 

//函数的调用可以作为左值
int &test2(){
        static int a=10; //静态变量存放在全局区 
        return a;
} 

int main(){
        //int &r=test1();
        
        int &r2=test2();
        cout<<"r2="<<r2<<endl;
        cout<<"r2="<<r2<<endl;
        
        test2()=1000;//如果函数的返回值是引用,这个函数调用可以作为左值 
        cout<<"r2="<<r2<<endl;
        cout<<"r2="<<r2<<endl;
                
        return 0;
        
}

2.5 引用的本质

本质:引用的本质在c++内部实现是一个指针常量

2.6 常量引用

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

在函数形参列表中,可以加const修饰形参,防止形参改变实参

#include<iostream>     
using namespace std;

//使用场景:用来修饰形参

//打印数据函数
void showvalue(const int &val){
        cout<<"val= "<<val<<endl;
} 
int main(){
//        int a=10;
        //int &r=10;        引用必须引一块合法的内存空间 
//        const  int &r=10;
        //加上const后,代码被编译器修改为:int temp=10; const int &r =temp;

        int a=10;
        showvalue(a);         
        return 0;
} 
  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值