• C/C++面试常见问题——指针和引用的区别


    首先想要理解指针和引用的区别,我们要明确什么是指针,什么是引用

    一,指针和引用的基本概念及特性

    指针是一个特殊变量,其中存储着所指向变量的地址

    指针主要有以下特性:

    1. 在使用时需要*解引用

    2. sizeof(指针)的大小是固定的,32位系统下是4字节,64位系统下是8字节

    3. 指针+1,指的是指针向后偏移,偏移量为指向变量的类型的大小

    引用不是新定义一个变量,而是给变量起别名,引用和被引用变量共用一处空间,不会额外开辟空间

    引用特性如下:

    1. 引用在定义时必须初始化

    2. 一个变量可以有多个引用,就如同一个人可以有多个别名

    3. 引用定义后,就无法在引用其他变量

    4. 常引用,常引用指的就是在引用常变量时需要用const修饰,这是因为权限只能缩小不能放大,被引用变量都无法修改值,那么引用自然也不能修改

    1. int main()
    2. {
    3. //引用
    4. int a = 10;
    5. int& b=a;
    6. //常引用
    7. const int c = 10;
    8. const int& d = c;
    9. return 0;
    10. }

    而常引用这里需要注意的一点时不同类型的常引用

     如上面情况,为什么int类型无法引用double类型变量,这是因为当用int类型引用double类型变量时,会有一个隐式类型转换,编译器会重新开辟一个临时空间用于存放double的整形数据,而临时变量具有常性,因此不同类型引用需要用const修饰

    二,引用和指针的区别

    在搞明白引用和指针各自的概念和特性之后,区别就显而易见了

    引用和指针的区别如下:

    1. 引用是取别名,和被引用对象共用一块空间。而指针则是一个特殊变量,存储指向变量的地址

    2. 引用在定义时必须初始化,而指针则没有要求,因此指针有NULL,引用则没有

    3. 指针sizeof计算的大小是固定的(32位4字节,64位8字节),而引用sizeof计算的大小则是被应用变量的大小

    4.引用在使用时按照正常变量使用即可,而指针还需要*解引用访问目标值

    5.引用在定义初始化后,就无法引用其他值;指针则可以改变指向的地址

    6.引用+1,就是引用的实体值+1;指针+1则是,指针偏移一个指向类型数据大小的偏移量

    7.指针有多级指针,用起来比较复杂;而引用,没有多级引用,因此在C++中使用引用更加安全

    但是这里需要注意一个大前提,在语法上讲,引用是别名,没有自己的空间,而在底层上,引用是有自己的空间的,而且其调用方式和指针是一样的,因此引用也可以看做是对指针的一层封装,让我们使用时更加简单安全。

    以上内容如有错误,希望大佬多多指点,感谢感谢

  • 相关阅读:
    无延时直播/超低延时直播画面同步性测试(实测组图)
    ADAU1860调试心得(2)硬件和软件的详细说明
    7、IOC 之Bean定义继承 parent
    【快速搞定Webpack5】基本配置及开发模式介绍(二)
    OpenFeign、Feign以及Ribbon关系介绍
    违反这些设计原则,系统就等着“腐烂”
    小程序商城框架源码 小程序源码带前端+后台+数据库
    UNIAPP实战项目笔记38 购物车的添加商品到购物车功能
    vue快速入门(四十)非父子组件通信
    rust变量
  • 原文地址:https://blog.csdn.net/zcxmjw/article/details/133913836