C++引用的复习

引用 就是起一个别名

别名可以跟原名一样哦😂

1.引用的使用

int a = 10;

int &b= a;

//error int &b = 10   引用本身需要一个合法的内存空间

截屏2022-06-03 上午10.29.29

2.引用注意事项

int a = 10; 
int &b = a;

1.引用必须要初始化
//error  int &b;
2.引用一旦初始化后,就不可以更改了
//error   int c = 20;  
//赋值操作,并非更改引用   b = c;   

3.引用做函数参数

  • 作用 :函数传参时,可以利用引用的技术让形参修饰实参
  • 优点 :可以简化指针修改实参
//例子
void mySwap(int &a,int &b)
{
   int temp = a;
   a = b;
   b = temp;
}

mySwap(a,b);

4.引用做返回值类型

  • 作用 :引用是可以作为函数的返回值存在的

  • 注意: 不要返回局部变量的引用

  • 用法: 函数调用作为左值

    //将引用作为函数返回值
    int& test()
    {
      static int a = 10;//静态变量 ,存放在全局区,全局区上的数据在程序结束后系统自动释放
      return a;
    }
    
    int &ref = test();
    //函数调用作为左值
    test() = 1000;
    cout<<ref<<endl;----1000
    

5.引用的本质

  • 本质:引用的本质在C++内部实现是一个 指针常量
 int a = 10;
 
int &ref = a;------系统会自动转换为----> int* const ref = &a;

ref = 20 ----系统发现ref是引用,自动帮我转换为: *ref = 20;
  • 结论:C++推荐使用引用技术,因为语法方便,引用的本质是指针常量,但是所有的指针操作编译器都帮我们做了

6.常量引用

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

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

void showValue(const int &val)
{
  //error val=1000; 不能这样操作了,也就保护了实参
   cout<<"val="<<val<<endl;
}

做题时看到的很好的总结:摘取自牛客网

指针和引用的敏感词与区别 
★ 相同点:
1. 都是地址的概念;
指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。
★ 区别:
1. 指针是一个实体,而引用仅是个别名;
2. 引用使用时无需解引用(*),指针需要解引用;
3. 引用只能在定义时被初始化一次,之后不可变;指针可变;
5. 引用不能为空,指针可以为空;
6. “sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小;
7. 指针和引用的自增(++)运算意义不一样;
8.从内存分配上看:程序为指针变量分配内存区域,而引用不需要分配内存区域。

posted on 2022-06-03 23:49  AcherLoveCode  阅读(28)  评论(0编辑  收藏  举报

导航