指针和引用 , 指针空值nullptr

2023-11-15

引用和指针

1. 引用概念

引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间, 使用方式和普通变量相同, 当原变量来对待 。比如:李逵,在家称为"铁牛",江湖上人称"黑旋风"。

底层实现: 通过指针来实现,

2. 形式: 类型+& + 新名称 = 新值

void test(){
   
	int a = 10;
	int b = -1;
	// ra引用, 是变量a的别名, a所代表的空间有两个名字, 代表还是原变量本身
	int& ra = a;

	ra = 20;// a 和 ra 都为 20

	// 引用在定义之后就不会再改变指向了, 始终指向本体
	int& rra = a;
	rra = b; // a变为-1, 修改了值
} 

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

3. 引用特性

  1. 引用在定义时必须初始化, 可以改变内容, 但是不能改变指向
  2. 一个变量可以有多个引用
  3. 引用一旦引用一个实体,再不能引用其他实体
void Test2()
{
   
 	int a = 10;
 	// int& ra; // 该条语句编译时会出错
	int& ra = a;
 	int& rra = a;
 	printf("%p %p %p\n", &a, &ra, &rra); 
}

引用相当于是一个const指针, 引用的底层就是通过指针来实现的, 指向的空间不能变, ==> 类型* const --> 指向在定义时确定, 不会变, 从一而终(int* const) --> const的指针
而 const 类型* const --> 表示内容和指向都不能变(const int* const a = 5;)

  1. 在指针前加const 指向不变
  2. 在类型前加const 内容不会
void test3(){
   
	// 常引用: 常引用可以指向const变量, 常量, 临时变量
	const int c = 30;
	const int& rc = c;
	//rc = 100; // const引用的内容不能变 --> 常引用
	const int& r1 = 10
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

指针和引用 , 指针空值nullptr 的相关文章

随机推荐

  • qqkey获取原理_通过call获取qqkey支持最新版

    如果真 进程 是否存在 TIM exe 假 且 进程 是否存在 QQ exe 假 str 你还没有登录QQ 返回 0 如果真结束 如果真 进程 是否存在 QQ exe pid 进程 取同名ID QQ exe pids 计次循环首 pid i
  • python Web开发 flask轻量级Web框架

    O flask介绍 Flask是一个使用 Python 编写的轻量级 Web 应用框架 其 WSGI 工具箱采用 Werkzeug 模板引擎则使用 Jinja2 Flask使用 BSD 授权 Flask也被称为 microframework
  • 数据结构题目-稀疏矩阵

    目录 问题 AU 函数可变参数练习 附加代码模式 问题 AV 多维下标向一维下标的换算 问题 AW 稀疏矩阵类型判断 问题 AX 稀疏矩阵转换成简记形式 附加代码模式 问题 AY 根据三元组输出稀疏矩阵 问题 AZ 三元组法表示的稀疏矩阵
  • python3.7解决ModuleNotFoundError: No module named '_bz2'

    安装完python3 7之后运行一个软件提示错误 from bz2 import BZ2Compressor BZ2Decompressor ModuleNotFoundError No module named bz2 解决方法如下 一
  • Linux内存管理子系统

    1 Linux子系统 Linux内核组成 SCI系统调用接口 PM进程管理子系统 MM内存管理子系统 Arch体系结构相关代码 DD驱动程序 Network Stack网络协议站 VFS虚拟文件系统 DD驱动程序 2 Linux内存管理子系
  • 《Apache MINA 2.0 用户指南》第十二章:日志过滤器

    后台 用户开放基于Apache MiNa的应用程序 用户可以在应用程序中创建日志管理 SLF4J MINa采用SLF4j作为日志输出 你可以在这里发现很多关于SLF4j的相关介绍 这个日志工具允许任何形式的日志系统实施 你可能使用 log4
  • 手把手教你使用gtest写单元测试

    开源框架 gtest 它主要用于写单元测试 检查真自己的程序是否符合预期行为 这不是QA 测试工程师 才学的 也是每个优秀后端开发codoer的必备技能 本期博文内容及使用的demo 参考 Googletest Basic Guide 1
  • 设计模式——多线程下的懒汉式单例

    懒汉 模式虽然有优点 但是每次调用 GetInstance 静态方法时 必须判断NULL m instance 使程序相对开销增大 多线程中会导致多个实例的产生 从而导致运行代码不正确以及内存的泄露 对于多线程的问题 我们可以看下面这个例子
  • 手把手教你用MindSpore训练一个AI模型!

    首先我们要先了解深度学习的概念和AI计算框架的角色 https zhuanlan zhihu com p 463019160 本篇文章将演示怎么利用MindSpore来训练一个AI模型 和上一章的场景一致 我们要训练的模型是用来对手写数字图
  • 中序线索化二叉树及遍历

    中序线索化二叉树及遍历 函数接口定义 void InThreading BiThrTree p 以结点P为根的子树中序线索化 void InOrderTraverse Thr BiThrTree T 中序遍历二叉线索树T的非递归算法 对每个
  • 科目1基础知识快速入门精简

    科目1 4 科目一 又称科目一理论考试 驾驶员理论考试 学习道路交通安全法律 法规和相关知识学习 考试内容包括驾车理论基础 道路安全法律法规 地方性法规等相关知识 再加地方性法规 考试形式为上机考试 100道题 90分及以上过关 科目二 又
  • linux文件编程(1)—— open、write、read、lseek、阻塞问题(ps文件操作/文件描述符/重定向原理/缓冲区/标准错误)

    参考 linux文件编程 1 常用API之open write read lseek 作者 丶PURSUING 发布时间 2021 04 08 22 19 28 网址 https blog csdn net weixin 44742824
  • SpringBoot通过QRCode生成二维码

    一 添加依赖
  • vue实现多页面应用开发,包含项目之间跳转

    需求 在一个vue项目工程下 需要部署两个项目甚至多个项目 实现思路 第一步 在vue config js文件中配置两个项目的入口 module exports pages index页面是必须的 作为主项目的入口页面 index entr
  • YARN的产生背景和架构剖析

    hadoop1存在的问题 1 单点故障 可靠性低 JobTracker采用了master slave结构 是集群事务的集中处理点 存在单点故障 2 单点瓶颈 扩展性差 需要完成的任务太多 JobTracker兼顾资源管理和作业控制跟踪功能跟
  • 基于计算机视觉的米粒计数检测——Matlab源码实现

    基于计算机视觉的米粒计数检测 Matlab源码实现 计数是现代生产和科研领域中的重要问题之一 在粮食收获领域 以小麦为例 正确地评估小麦产量对于农业生产和市场供应至关重要 然而 目前的计数方法多数是通过人工或半自动方式 难以快速 准确地完成
  • 小程序和网页的区别

    小程序和网页有什么区别呢 下面我们拿微信小程序来举例 运行环境 网页 在浏览器中运行 微信小程序 在微信中运行 开发环境 网页 代码编辑器 vscode 网页浏览器 chrome 微信小程序 代码编辑器 vscode 微信模拟器 微信开发者
  • mfc140.dll丢失怎样修复-由于找不到mfc140.dll无法继续执行代码的解决方法

    mfc140 dll是电脑文件中的dll文件 动态链接库文件 如果计算机中丢失了某个dll文件 可能会导致某些软件和游戏等程序无法正常启动运行 并且导致电脑系统弹窗报错 在电脑随便打开一个浏览器然后在顶部输入 dll修复程序 site 按下
  • Linux系统下安装jdk及环境配置(两种方法)

    这里介绍两种linux环境下jdk的安装以及环境配置方法 在windows系统安装jdk以及环境配置 相信大家都会 这里就不做赘述了 这里主要讲讲linux下的jdk安装以及环境配置 第一种属于傻瓜式安装 一键安装即可 yum安装 第二种手
  • 指针和引用 , 指针空值nullptr

    引用和指针 1 引用概念 引用不是新定义一个变量 而是给已存在变量取了一个别名 编译器不会为引用变量开辟内存空间 它和它引用的变量共用同一块内存空间 使用方式和普通变量相同 当原变量来对待 比如 李逵 在家称为 铁牛 江湖上人称 黑旋风 底