指针在 C++ 中最核心、最实用的两个作用:“避免大数据的复制” 和 “共享”。

1. 作用一:避免昂贵的"深拷贝"(提升运行速度)

在计算机中,变量赋值通常是"复制粘贴"。

  • 如果不使用指针(直接用对象): IMAGE 是一个很大的结构体(里面包含成千上万个像素点的数据)。 如果你写 Block b2 = b1;,计算机必须把 b1 图片里的每一个像素点都复制一遍给 b2。这叫 "深拷贝" (Deep Copy)

    • 后果:CPU 累死,卡顿。
  • 使用指针(现在的写法): IMAGE *img 只是一个整数(内存地址)。 当你写 b2.img = b1.img; 时,计算机只需要复制这个由 8 个字节(64位系统)组成的地址号码。这叫 "浅拷贝" (Shallow Copy)

    • 后果:CPU 几乎不费吹灰之力,操作瞬间完成。

2. 作用二:实现"一对多"的资源共享(节省内存空间)

这是指针最迷人的地方。它允许多个对象 共同使用同一个数据源

  • 场景:你的游戏里可能会同时出现 100 个红色的 Z 型方块。

  • 不指针对比:你需要内存里存 100 份一模一样的红色 Z 型图片数据。

  • 指针做法

    1. 你在内存的静态区(static)只存 1 份 红色 Z 型图片。

    2. 那 100 个方块对象里,每个方块只存一个指针,全部指向 那唯一的 1 份图片。

图解关系:

Plaintext

复制代码
[方块对象 Block 1] ----\
                      \
[方块对象 Block 2] ----+----> [ 真正硕大的图片资源 (IMAGE) ]
                      /       (内存中只存在一份)
[方块对象 Block 3] ----/

3. 通俗比喻:网页链接 vs 网页截图

为了让你彻底明白,我们可以用"发给朋友看网页"做比喻:

  • 不用指针 (传值) : 你把整个网页从头到尾截图(甚至打印出来),然后发给朋友。

    • 缺点:文件很大,发送很慢,浪费手机存储。
  • 使用指针 (传址) : 你只复制了网页的 URL 链接(网址) 发给朋友。

    • 优点:只有一行字,发送极快。朋友点击链接,看到的是云端同一个网页。
相关推荐
t***5443 小时前
如何配置Orwell Dev-C++使用Clang
开发语言·c++
CoderCodingNo4 小时前
【信奥业余科普】C++ 的奇妙之旅 | 13:为什么 0.1+0.2≠0.3?——解密“爆int”溢出与浮点数精度的底层原理
开发语言·c++
kongba0075 小时前
项目打包 Python Flask 项目发布与打包专家 提示词V1.0
开发语言·python·flask
froginwe115 小时前
C 语言测验
开发语言
极客智造5 小时前
深入详解 C++ 智能指针:RAII 原理、分类特性、底层机制与工程实战
c++·智能指针
今夕资源网5 小时前
powershell工具包 安装升级脚本并设置UTF-8 环境快捷方式创建 将powershell的编码默认改为UTF-8
开发语言·utf-8·powershell·utf-8编码·powershell7·powershell5·设置utf-8编码
机器视觉知识推荐、就业指导6 小时前
Qt:真正的门槛不是入门,而是维护
开发语言·qt
hhb_6186 小时前
Dylan 语言核心特性与工程实践深度解析
开发语言·c#
王璐WL6 小时前
【C++】类的默认成员函数(上)
c++
王老师青少年编程7 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【区间贪心】:区间覆盖(加强版)
c++·算法·贪心·csp·信奥赛·区间贪心·区间覆盖(加强版)