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

1、引用的概念

1.引用 不是新定义一个变量,而是给已存在变量取了一个别名

2.编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间

比如:孙悟空,可以叫他孙悟空 ,也可以叫齐天大圣。本质他们就是一个人

2、引用的定义

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

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

复制代码
    int a = 100;
    int& ra = a;                    //定义引用类型
    printf("%p\n", &a);
    printf("%p\n", &ra);

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

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

3、引用的特性

  • 定义引用时必须给初始化

  • 没有空引用

  • 引用一旦引用一个实体,再不能引用其他实体了

  • 一个变量可以有多个引用(就相当于一个变量有好几个别名)

    复制代码
      int &a1;             //没有初始化
      int &a2 = nullptr;   //没有空引用

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

3、引用和指针的区别

在语法概念上引用就是一个别名,没有独立空间,和其引用实体共用同一块空间

在底层实现上引用实际是有空间的,因为引用是按照指针方式来实现的

引用的主要用途是:修饰函数的形参和返回值.

在C++语言中,函数的参数和返回值的传递方式有三种:值传递,指针传递和引用传递。引用具有指针的效率,又具有变量使用的方便性和直观性.
实际上引用可以做的事,指针都可以做,为什么还要引用呢?

引用体现了最小特权原则 ,即给予程序元素完成其功能的最小权限. 指针能够毫无约束的操作内存中的任何东西,尽管功能强大,但是非常危险.

引用 指针
引用定义一个变量的别名 储存一个变量的地址
引用必须初始化 无要求
引用一个实体后不能再引用其他实体 无要求
没有空引用 有空指针
没有多级引用 有多级指针
引用的权限小 指针的权限比较大
相关推荐
神仙别闹12 小时前
基于 C# OpenPGP 的文件管理系统
开发语言·c#
汉克老师12 小时前
GESP6级C++考试语法知识(四、图与树(四))
c++·贪心算法·优先队列·哈夫曼编码·哈夫曼树·gesp6级·gesp六级
番石榴AI12 小时前
纯 CPU 推理!0.1B 超轻量级端到端OCR模型,使用 Java 进行文档解析
java·开发语言·ocr
likerhood12 小时前
ConcurrentHashMap详细讲解(java)
java·开发语言·性能优化
机器学习之心12 小时前
集成BWM法、熵权法、改进博弈论组合赋权与三角直觉模糊云模型的多属性评价模型,MATLAB代码
开发语言·matlab·熵权法·三角直觉模糊云模型·bwm法·改进博弈论组合赋权·多属性评价模型
子兮曰12 小时前
whisper.cpp 深度解析:从边缘设备到实时语音识别
前端·c++·后端
特种加菲猫13 小时前
二叉搜索树:数据世界的“快速寻路指南”
开发语言·c++
naturerun13 小时前
从数组中删除元素的算法
数据结构·c++·算法
特种加菲猫13 小时前
STL关联容器:Set/Multiset与Map/Multimap详解
开发语言·c++
我滴老baby13 小时前
0基础速通Python+AI|2026热门轻量化玩法全攻略:从入门到实战,3天搞定AI应用开发
开发语言·人工智能·python