当前位置: 首页 > news >正文

指针在 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 链接(网址)发给朋友。

    • 优点:只有一行字,发送极快。朋友点击链接,看到的是云端同一个网页。

http://www.cnnetsun.cn/news/170373.html

相关文章:

  • Excalidraw API接口文档:开发者集成指南
  • Excalidraw如何提升技术团队的沟通效率?
  • Excalidraw代码块集成方案:程序员也能轻松画图
  • Excalidraw使用技巧:10个你可能不知道的快捷键
  • 技术文档新利器:Excalidraw手绘风图表让架构更清晰
  • Python+Vue的农产品销售系统的设计与实现_ Pycharm django flask
  • 8、Windows 2000 硬件与系统设置全解析
  • 11、本地和网络打印机设置全解析
  • 12、Windows 2000 路由和远程访问服务(RRAS)配置指南
  • 15、COM+与Internet Information Server的配置与优化
  • Excalidraw如何实现多人实时编辑?协作机制全解析
  • 29、Windows相关网络功能与打印机管理全解析
  • Linly-Talker在工厂流水线操作指引中的使用
  • GB+GBC游戏大全(原版+中文+目录+攻略)
  • 45、实时应用开发与本地-托管代码接口解析
  • 16、Active Directory Schema修改指南
  • 18、深入探索Active Directory集成:应用与工具全解析
  • Excalidraw插件生态盘点:扩展功能的强大支持
  • 10、PowerShell远程管理与文件、注册表操作全解析
  • 18、PowerShell:系统管理与自动化的利器
  • Excalidraw云端部署方案:Docker一键启动教程
  • Linly-Talker在酒店自助服务终端的应用设想
  • Linly-Talker与火山引擎TTS性能对比分析
  • Excalidraw在敏捷开发中的应用场景全解析
  • 从 0 实现一个 Offline RL 算法 (以 IQL 为例)
  • Linly-Talker在银行网点智能柜员机上的集成
  • 用Excalidraw开源白板,轻松实现AI驱动的技术架构设计
  • Day 43图像数据与显存机制@浙大疏锦行
  • Linly-Talker支持语音指令控制数字人行为
  • OBS直播教程:OBS美颜插件怎么调出来?OBS美颜插件安装步骤