C++ 引用

本文详细介绍了C++中变量引用的概念,包括如何给变量起别名,引用作为函数参数的优点,以及注意事项。讲解了常量引用的使用和避免局部变量引用的风险。重点讨论了引用的底层实现——指针常量,并通过实例展示了引用在实际编程中的应用和优势。
摘要由CSDN通过智能技术生成

引用:给变量起一个别名
语法: 数据类型 &别名=原名

int main()
{
    int a=10;
    itn b=20;
    int &b;    //这是错误的。
    int &c=a;     //引用必须初始化,初始化完毕就不可以改变了
    c=b;
    cout << "a="<<a <<endl;
    cout << "b="<<b<<endl;
    cout << "c="<<c <<endl;
    system("pause");
    return 0;
}

引用做函数参数
作用:函数传参时,可以利用引用的技术让形参修饰实参
优点:** 可以简化指针修饰实参**

//值传递
void myswap01(int a, int b){
	int temp=a;
	a=b;
	b=temp;
}
//地址传递
void myswap02(int*   a,int*   b){ //定义Int 类型指针变量a
   int temp =*a;
   *a=*b;
   *b=temp;
}
//引用传递
void myswap03(int &a, int   &b)
{
		int  temp=a;
		a=b;
		b=temp;
}

引用做返回值

  1. 不要返回局部变量的引用
    案例:
int&   test01()  //以引用的方式进行返回
{
      int a=10;//局部变量存放在四区中的栈区
      return a;
}
int main(){
      int &ref = test01();
      cout << "ref="  <<ref<<endl; //第一次结果正确,因为编译器做了保留
      cout << "ref="  <<ref<<endl;//第二次结果错误,因为A的内存已经释放
}

注意:局部变量使用完,是释放的。所以这样的做是有隐患的。

改动:使用静态变量

int&  test02(){
     static int a=10;  //静态变量,存放在全局区,全局区上的数据在程序结束后系统释放
     return a;
} 
int main(){
    int& ref2=test02();    //与测试test01一样
    cout <<"ref2="<<ref2<<endl;
}
//函数调用可以作为左值 
    test02()=1900;  //test02()返回的是a的引用
    cout <<"ref2="<<ref2<<endl;

============
引用的本质
内部的实现就是指针常量
即指针的指向是不可以修改的,指向的内容是可以修改的。

void func(int& ref){
		ref =100;    //ref 是引用,转换为 *ref =100
}
int main(){
     int a=10;
     int&  ref=a;
     ref =20;
      
     cout<<"a:"<<a <<ebdl;
     cout<<"ref:"<<ref <<endl;

    func();
    trnturn 0;
}

在C++中,推荐使用引用,把引用看成起别名即可。

常量引用
作用:常量引用主要来修饰形参,防止误操作
在函数形参列表中,可以加const修饰形参

void showvalue(const int&  v){      //这样形参就改不了外界的实参了
  	   cout <<  v<<endl;
}
int main(){
       int a=10;
       //加上const之后 编译器将代码修改为: int temp=10;const  int&   ref  =temp;
       //const int&  ref =10;//引用必须引一块合法的内存空间
       //ref =20;    // 加入const 之后变为只读,不可以修改
       //函数中常利用常量引用防止误操作来修改实参
       int a=10;
       showvalue(a);
       system("pause");
        renturn  0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值