news 2026/5/8 11:14:40

指针与引用区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
指针与引用区别

指针是一个变量,存的是地址;引用是一个别名,本质是被引用对象本身。

本质区别

对比点指针(Pointer)引用(Reference)
本质一个变量另一个变量的别名
是否占内存有独立内存通常不单独占(编译器实现)
是否可为空可以nullptr必须绑定对象
是否可改指向可以一旦绑定不能再换
是否必须初始化可以先定义后赋值必须初始化
使用方式*p解引用直接当原变量用

语法层面对比

指针

int a = 10; int* p = &a; *p = 20; // 修改 a cout << a; // 20

特点:

p是变量

p里存的是a的地址

访问对象必须*p

引用

int a = 10; int& r = a; r = 20; // 修改 a cout << a; // 20

特点:

r不是新对象

r就是a

用法和普通变量一样

内存层面理解

指针的内存示意

int a = 10;
int* p = &a;
a: 10
p: &a

a占 4 字节

p也占 8 字节(64 位系统)

引用的内存示意

int a = 10;
int& r = a;

a (r): 10

r没有独立身份

编译器内部把r当作a

引用在汇编层面通常被优化成直接访问原变量

能不能为 null?

指针:可以

int* p = nullptr;

常用于:

表示“暂时不指向任何对象”

链表、树、可选对象

引用:不行

int& r; // ❌ 编译错误

能不能“改绑”?

指针:可以改指向

int a = 1, b = 2; int* p = &a; p = &b; // 改指向 b

引用:不能改绑

int a = 1, b = 2; int& r = a; r = b; // ❌ 不是改绑定

这行代码的含义是:

把 b 的值赋给 a

绑定关系仍然是:r -> a

函数参数中的区别

指针传参

void func(int* p) { if (p) *p = 100; } int a = 10; func(&a);

特点:

需要传地址

可能为空(要判空)

更底层、更灵活

引用传参

void func(int& x) { x = 100; } int a = 10; func(a);

特点:

语法更自然

不用判空

更安全

C++ 推荐:能用引用就用引用

什么时候用指针?什么时候用引用?

用引用的场景

函数参数

返回值(不为 null)

表达“别名关系”

不希望对象为空

用指针的场景

可能为空

需要动态内存

需要重新指向

数据结构(链表、树)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/6 10:26:12

提示工程架构师必收藏:模块化设计资源大全

提示工程架构师必收藏&#xff1a;模块化设计资源大全 关键词&#xff1a;提示工程、模块化设计、架构师、资源整合、设计模式、代码结构、应用场景 摘要&#xff1a;本文专为提示工程架构师打造&#xff0c;全面深入地介绍模块化设计相关内容。首先阐述模块化设计在提示工程…

作者头像 李华
网站建设 2026/5/6 10:26:10

Pepakura Designer(纸工艺模型制作软件)

Pepakura Designer是一款专业的纸艺制作软件&#xff0c;用于将3D模型转换为纸质模型的制作图纸。它提供了多种工具和功能&#xff0c;使用户能够创建、编辑和打印出精确的纸质模型。 软件功能 3D模型导入&#xff1a;支持导入各种3D模型文件格式&#xff0c;包括OBJ、DXF等&a…

作者头像 李华
网站建设 2026/5/7 13:33:23

Apache Doris核心架构解析:为什么它成为大数据分析的首选?

Apache Doris核心架构解析&#xff1a;为什么它成为大数据分析的首选&#xff1f;关键词&#xff1a;Apache Doris&#xff0c;大数据分析&#xff0c;核心架构&#xff0c;MPP架构&#xff0c;实时分析摘要&#xff1a;本文深入解析了Apache Doris的核心架构&#xff0c;旨在探…

作者头像 李华
网站建设 2026/5/6 10:27:51

ERNIE-4.5-0.3B-PT快速部署指南:3步搭建文本生成环境

ERNIE-4.5-0.3B-PT快速部署指南&#xff1a;3步搭建文本生成环境 1. 为什么选这个镜像&#xff1f;轻量、开箱即用、真能跑起来 你是不是也遇到过这些情况&#xff1a; 下载了一个“轻量级”模型&#xff0c;结果发现要自己配环境、改代码、调参数&#xff0c;折腾半天连服务…

作者头像 李华
网站建设 2026/5/6 10:26:17

开源MinerU镜像免配置实操:3步完成学术论文图像解析与多轮对话

开源MinerU镜像免配置实操&#xff1a;3步完成学术论文图像解析与多轮对话 1. 为什么学术人需要一个“会看图”的AI助手&#xff1f; 你有没有过这样的经历&#xff1a;深夜赶论文&#xff0c;突然发现PDF里一张关键图表无法复制文字&#xff1b;导师发来一份扫描版会议论文&…

作者头像 李华