指针 vs 引用 旨在理解指针和引用的区别Persona(张三);Person*pa;//指针Personra;//引用定义方式• 指针Person* pp 是独立变量存对象的地址p 自己有内存。• 引用Person r ar 仅仅是对象 a 的别名引用本身不占用独立内存编译器层面逻辑上没有独立实体。• 引用定义的时候必须初始化绑定对象不能先声明后赋值。Personr;//❌编译报错引用必须初始化Person*p;//✅指针可以先定义后面再赋值 pa能不能改变指向绑定目标• 指针可以p b;让指针指向另一个对象。• 引用一旦绑定永远不能换绑定对象。注意r b;不是改变引用绑定等价a b是赋值给原对象 a。Persona(a),b(b);Personra;rb;//❗不是r绑定b把b拷贝赋值给ar依旧是a的别名。是否可以为 NULL / 空• 指针Person* p nullptr; ✅允许可以是空。• 引用不允许为空引用一定绑定一个有效对象。• 工程上引用天然保证不为空指针要时刻判断nullptr。使用语法• 指针解引用p访问成员p-setName()• 引用直接像对象一样用r.setName()不需要、-const 修饰的行为重点const Person* p; //指针指向const对象指针可改指向Person* const p; //指针本身const不能改指向//引用没有“普通引用const”这种写法Person const r a; // ❌语法非法引用天生不能改绑定加const无意义。实测vs2015编译可以通过但是报warning C4227: 使用了记时错误: 忽略引用上的限定符好像标准c缺少不允许这么写。msvc微软编译器的兼容扩展跨平台不能这么写。本身没有意义。const Person r a; // ✅const引用被引用的对象只读sizeof 结果• sizeof§得到指针本身大小x64 为 8 字节。• sizeof®得到原对象 Person 的大小不是引用大小。引用逻辑上没有独立内存sizeof 看的是它绑定的实体。拷贝行为Person* p1 a;Person* p2 p1; //拷贝指针的值地址两个指针指向同一个aPerson r1 a;Person r2 r1; //r2也是a的别名没有拷贝对象没有构造没有拷贝构造没有拷贝赋值运算。函数参数场景对比//指针有可能传入nullptr函数内部要判空void funcPtr(Person* p) { if(nullptr p) return; p-print(); }//引用一定是有效对象不需要判空void funcRef(Person r) { r.print(); }对比项指针 Person* p引用 Person r初始化可以先定义后赋值定义时必须绑定对象能否为空nullptr 合法绝不允许为空能否改变指向目标✅pb可以修改指向❌绑定后永远不能更换目标语法访问对象*pp-xxx直接 r.xxxsizeof得到指针本身大小 (8 字节 x64)得到原始对象大小const 语法const Person* / Person* const两种只有const PersonPerson const非法内存指针变量自己占内存逻辑上只是别名无独立内存传参需要考虑判空一定有效无需判空

相关新闻

最新新闻

STM32CubeIDE 一站式开发环境:从零安装到首个工程调试全指南

STM32CubeIDE 一站式开发环境:从零安装到首个工程调试全指南

如果你是一名刚刚接触 STM32 开发的工程师或学生,面对 Keil、IAR、STM32CubeIDE 等众多开发工具,是否感到无从下手?如果你已经习惯了某种开发环境,是否又在纠结是否有必要切换到 STM32 官方主推的这款 IDE?又或者&…

2026/8/25 18:24:58
Ubuntu 22.04 裸机安装全攻略:从驱动兼容到系统优化

Ubuntu 22.04 裸机安装全攻略:从驱动兼容到系统优化

1. 项目概述:为什么选择裸机安装Ubuntu?如果你正在看这篇内容,大概率是厌倦了虚拟机里Ubuntu的卡顿,或者想彻底告别Windows,又或者新买了一块固态硬盘想体验纯粹的Linux开发环境。没错,从虚拟机到物理机&am…

2026/8/25 18:24:58
Matplotlib核心架构与面向对象绘图:从Figure/Axes到高级定制

Matplotlib核心架构与面向对象绘图:从Figure/Axes到高级定制

1. 项目概述:为什么你需要认真认识Matplotlib?如果你刚开始用Python处理数据,或者已经写过几行print()和循环,那么迟早会遇到一个场景:你有一堆数字,但不知道怎么把它们变成一张能让人看懂的图。这时候&…

2026/8/25 18:24:58
AI求职工具:多平台自动投递与智能匹配技术解析

AI求职工具:多平台自动投递与智能匹配技术解析

1. 项目背景与核心价值这个标题描述了一款面向求职者的AI工具,能够自动同步投递11个主流招聘平台,并通过智能算法吸引HR主动联系。在当前竞争激烈的就业市场中,这种工具解决了三个核心痛点:信息孤岛问题:求职者通常需要…

2026/8/25 18:24:58
Python自动化批量导入TXT单词到有道词典生词本

Python自动化批量导入TXT单词到有道词典生词本

1. 项目概述:从零散文本到高效词汇管理手头攒了一堆单词,全在txt文件里躺着,想系统学习却无从下手?手动一个个添加到词典生词本里,效率低到让人抓狂。这几乎是每个语言学习者和技术文档查阅者都遇到过的问题。无论是从…

2026/8/25 18:24:58
前端招聘现状与技术学习优先级分析

前端招聘现状与技术学习优先级分析

1. 从面试官视角看前端招聘现状最近帮朋友公司面了几轮前端,最大的感受是:这个行业里真正懂技术的人可能比想象中少得多。有个候选人简历写着"精通Vue3响应式原理",结果连effect和track的关系都说不清楚;另一个号称&quo…

2026/8/25 18:19:58