C++中引用与指针的选择

引用是 "受限制、更安全的指针"

指针是 "全能但危险的地址工具"

引用与指针的核心区别


是否可以为空

复制代码
 * 指针可以为空,即 nullptr
 
 * 引用不能为空,必须一开始就绑定变量
c++ 复制代码
int* p = nullptr;  // 合法
int& r;  // 错误*

是否可以修改指向

复制代码
* 指针可以随时指向别的变量

* 引用一旦绑定,终身不能换对象

操作方式

复制代码
* 指针需要解引用才能访问值

* 引用可以直接用,像普通变量一样

内存级别

复制代码
* 指针是独立变量,占内存,8个字节

* 引用不占额外内存,编译之后就是指针

安全性

复制代码
* 指针很危险,可以乱跳、越界、空指针

* 引用很安全,不会为空,不会乱跳,不易出错

工业级怎么选


复制代码
* 优先用引用

* 必须用指针的情况;

	* 需要空置 nullptr
	
	* 需要指向不同对象
	
	* 需要操作内存地址
	
	* 低层驱动,需要嵌入式硬件操作
相关推荐
前鼻音太阳熊29 分钟前
【MES系统】- 工业HMI状态机可视化实践:从手写SVG到Cytoscape.js的技术选型与踩坑
开发语言·javascript·ecmascript
明日清晨32 分钟前
VS2022禁用 NRVO/返回值优化(不调用拷贝构造函数处理方式)
c++
阿米亚波44 分钟前
【C++ STL】std::array
java·开发语言·c++
choumin1 小时前
结构型模式——组合模式
c++·设计模式·组合模式·结构型模式
wuyk5551 小时前
66.嵌入式C语言进阶:共用体(Union)实战指南——单片机内存省一半的神级技巧
c语言·开发语言·stm32·单片机·嵌入式硬件
Ivanqhz1 小时前
Rust #[derive(Serialize)]浅析
开发语言·后端·rust
怪奇云呼军1 小时前
闪电智能 Voice Agent 怎样根据语速、停顿和追问方式切换话术?策略引擎拆解
开发语言·人工智能·网络协议·算法·语音识别·web app
努力努力再努力wz1 小时前
【分布式系统与 RPC 框架系列】从单机瓶颈到远程调用:一文理解分布式架构与 RPC 原理
linux·网络·c++·分布式·网络协议·rpc·架构
Ivanqhz1 小时前
Rust parse() 浅析
开发语言·后端·rust
神仙别闹1 小时前
基于C++实现(控制台)景区旅游管理系统
开发语言·c++·旅游