• 还不知道指针和引用的区别,一篇文章教会你


    1、引用的概念

    1.引用不是新定义一个变量,而是给已存在变量取了一个别名
    2.编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间
    比如:孙悟空,可以叫他孙悟空,也可以叫齐天大圣。本质他们就是一个人

    在这里插入图片描述

    2、引用的定义

    我们如何定义一个引用呢?

    类型& 引用变量名(对象名) = 引用实体

        int a = 100;
        int& ra = a;                    //定义引用类型
        printf("%p\n", &a);
        printf("%p\n", &ra);
    
    • 1
    • 2
    • 3
    • 4

    在这里就是相当于一个实体取了两个名字分别为a和ra,并且在这个空间中不开辟新的空间
    在这里插入图片描述

    注意:引用类型必须和引用实体是同种类型的

    3、引用的特性

    • 定义引用时必须给初始化
    • 没有空引用
    • 引用一旦引用一个实体,再不能引用其他实体了
    • 一个变量可以有多个引用(就相当于一个变量有好几个别名)
    	int &a1;             //没有初始化
    	int &a2 = nullptr;   //没有空引用
    
    • 1
    • 2

    引用本身是一个变量,它不占用内存空间,它和指针不一样,它仅仅是一个别名

    3、引用和指针的区别

    在语法概念上引用就是一个别名,没有独立空间,和其引用实体共用同一块空间
    在底层实现上引用实际是有空间的,因为引用是按照指针方式来实现的

    引用的主要用途是:修饰函数的形参和返回值.
    在C++语言中,函数的参数和返回值的传递方式有三种:值传递,指针传递和引用传递。引用具有指针的效率,又具有变量使用的方便性和直观性.

    实际上引用可以做的事,指针都可以做,为什么还要引用呢?
    引用体现了最小特权原则,即给予程序元素完成其功能的最小权限. 指针能够毫无约束的操作内存中的任何东西,尽管功能强大,但是非常危险.

    引用指针
    引用定义一个变量的别名储存一个变量的地址
    引用必须初始化无要求
    引用一个实体后不能再引用其他实体无要求
    没有空引用有空指针
    没有多级引用有多级指针
    引用的权限小指针的权限比较大
  • 相关阅读:
    相关作业总结
    怎样创建Oracle的dbms_jobs(数据库任务)
    如何控制MySQL事务提交后,刷redo-log的策略?
    TCP/IP协议群
    Qt状态机框架
    GJB常见混淆概念
    vue--vuerouter缓存路由组件
    web前端期末大作业 基于HTML+CSS+JavaScript程序员个人博客模板(web学生作业源码)
    【git随笔,日常积累】
    美中嘉和在港交所招股书失效:去年亏损约5亿元,杨建宇为实控人
  • 原文地址:https://blog.csdn.net/weixin_74268082/article/details/134561694