C++的答辩复习记录-01

文章讨论了C++中的指针、变量和引用的区别,包括它们的存储特性、初始化规则以及引用的特殊性质,如引用不分配额外空间,必须在声明时初始化,不能有指向引用的指针等。同时,解释了左值引用和右值引用的概念,以及const引用和constexpr常量的用法。此外,提到了函数参数传递的不同方式,特别是引用传递能提高效率并允许函数修改原变量。
摘要由CSDN通过智能技术生成

  1. 指针和变量:两者有各自的存储空间,指针也是一个变量
  2. 引用和变量:两者同一存储单元,引用没有“额外”分配存储空间。
  3. 引用在声明时必须初始化,否则会产生编译错误
  4. 可以指针变量的引用,但不能指向引用的指针
  5. 不能建立引用数组,但可以建立数组或数组元素的引用
    int  (&ra)[10] = a;  
    	//正确:ra是具有10个元素的整型数组的引用
    int  *(&rpa)[10] = b;   
    	//正确:rpa是具有10个整型指针的数组的引用
    //从取别名角度去思考这个问题,引用不设计空间分配
    
  6. 引用的引用不存在(因为 T& 不是类型), 不能建立多重引用
  7. 左值:是指变量对应的那块区域的地址, 是可以放在赋值符号左边的值右值:是指变量对应的内存区域中存储的数据值, 是可以放在赋值符号右边的值
  8. 左值引用和右值引用
    左值引用只能绑定变量名,而且具有持久性;
        类型 &引用名 = 变量名; 
    右值引用只能绑定到常量或表达式求值过程中创建的临时变量上,可延长临时变量的生存周期;右值引用是C++11为了支持移动操作而引入的新型引用类	型,只能绑定到即将销毁的对象上,如常量和表达式
        类型 &&引用名 = 表达式; 
  9. 定义引用时,用const修饰的引用称为 常量引用。相对而言,没有const修饰的引用称为 普通引用
    const 类型 &引用名 = 变量名; 
    
  10. const引用(普通引用)不可以用 常量 或 “运算符 & 表达式的运算结果”进行引用初始化,但const引用却可以
  11. constexpr常量必须在编译时进行初始化,而const常量初始化可以延迟到运行时
  12. constexpr常量的表达式中的每一部分值都是在程序运行前就可以确定的字面值常量;const常量无此限定,只限定了在运行期间不可修改
    const int n = size();   //正确
    constexpr int n = size();   //错误
    int j = 21; const int i=10;
    const int  j1=i+10; 	//正确
    const int  j1=j+10; 	//正确
    constexpr int  j1=i+10; 	//正确
    constexpr int  j1=j+10; 	//错误
    


  13. 函数参数传递的三种方式:值传递、地址传递、引用传递
    值传递:传递的是参数值的拷贝(副本),而不是参数本身
    地址传递||引用传递:函数要改变调用它的函数的变量(实参)
    大型数据对象 按引用传递,效率非常高
  14. 此外,指针允许传递空对象,但引用必须传递有效对象
  15. const 限制函数的参数能够保证函数不对参数做任何修改
  16. 当一个函数返回引用时, 实际返回了一个变量内存地址
    Ø既然是内存地址,就能够读和写该地址所对应的内存区域中的值,这使得:函数调用能够出现在赋值语句的左边;
    Ø函数返回的引用:不是返回变量的副本;
  17. 不可返回函数内部的临时(局部)变量
    int & fn(int &num){
        return (num);
    }
    



早上先看到这里,去玩其他事情了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值