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

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

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

引用与指针的核心区别


是否可以为空

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

是否可以修改指向

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

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

操作方式

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

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

内存级别

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

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

安全性

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

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

工业级怎么选


复制代码
* 优先用引用

* 必须用指针的情况;

	* 需要空置 nullptr
	
	* 需要指向不同对象
	
	* 需要操作内存地址
	
	* 低层驱动,需要嵌入式硬件操作
相关推荐
Three~stone1 小时前
MATLAB vs Python 两者区别和安装教程
开发语言·python·matlab
wsoz2 小时前
Leetcode子串-day4
c++·算法·leetcode
soragui2 小时前
【Python】第 1 章:Python 解释器原理
开发语言·python
UAq6wn76j2 小时前
.NET源码生成器使用SyntaxTree生成代码及简化语法
java·开发语言·.net
@atweiwei2 小时前
Go语言并发编程面试题精讲(上)
java·开发语言·面试·golang·channel
不会写DN2 小时前
使用 sync.Once 解决 Go 并发场景下的重复下线广播问题
开发语言·网络·golang
_MyFavorite_2 小时前
JAVA重点基础、进阶知识及易错点总结(36)Lombok 实战 + 阶段总结
java·开发语言
xyq20242 小时前
过滤器模式
开发语言