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

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

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

引用 指针
引用定义一个变量的别名 储存一个变量的地址
引用必须初始化 无要求
引用一个实体后不能再引用其他实体 无要求
没有空引用 有空指针
没有多级引用 有多级指针
引用的权限小 指针的权限比较大
相关推荐
乌鸦乌鸦你的小虎牙1 小时前
qt 5.12.8 配置报错(交叉编译环境)
开发语言·数据库·qt
feifeigo1231 小时前
Leslie人口模型MATLAB实现(中长期人口预测)
开发语言·matlab
写代码的二次猿1 小时前
安装openfold(顺利解决版)
开发语言·python·深度学习
一只大袋鼠1 小时前
Redis 安装+基于短信验证码登录功能的完整实现
java·开发语言·数据库·redis·缓存·学习笔记
70asunflower1 小时前
CUDA编程指南基础知识点总结(5)
c++·人工智能·cuda
※DX3906※2 小时前
Java排序算法--全面详解面试中涉及的排序
java·开发语言·数据结构·面试·排序算法
笨笨马甲3 小时前
Qt QSS使用指南
开发语言·qt
We་ct4 小时前
LeetCode 77. 组合:DFS回溯+剪枝,高效求解组合问题
开发语言·前端·算法·leetcode·typescript·深度优先·剪枝
格林威4 小时前
工业相机图像高速存储(C#版):内存映射文件方法,附Basler相机C#实战代码!
开发语言·人工智能·数码相机·c#·机器视觉·工业相机·堡盟相机
Nuopiane4 小时前
MyPal3(3)
java·开发语言