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

有关指针的认知盲区:指针大小,决定因素,指针变量

反思:: “指针变量”就是值为内存地址的变量
视频链接:3、Introduction to linked list_哔哩哔哩_bilibili

问题与思考

视频里提到一个词“指针变量”。这个词常听到,但我对其的核心思想和具体操作一知半解。感觉就是在一块内存空间存放内存地址,并且我认为内存地址是整数型的数据对象,这块存放“指针”的内存大小为4个字节。
还有一个问题是为什么“指针变量”要带变量两个字,变量这词的具体含义是什么?

回答

询问了deepseek后,发现了一些自己的认识盲区。先说一下对的认知
(1)本质:指针变量就是一个存放内存地址的变量。
(2)地址的形态:内存地址在底层确实通常被当作一个整数值来处理(更准确地说是无符号整数),因为它本质上是对内存字节序列的编号。

认知盲区
(1)指针大小
存放指针变量的内存大小因系统而定。32位系统是4字节(4∗8=324*8=3248=32)。64位系统是8字节(8∗8=648*8=6488=64)。

(2)“32位系统”中的数字32代表什么?
在理解指针大小时,突然就想到我们常说“32位系统”或“64位系统”,其中的数字就代表了其内存地址的长度

(3)内存地址的长度由什么决定?
我一开始以为是内存的硬件设计,后来发现不是,是cpu的位宽。也就是说32位的cpu能处理的内存地址的长度是32位。32位cpu的寻址能力的上限就是232=4,294,967,296=4GB2^{32}=4,294,967,296=4GB232=4,294,967,296=4GB

(4)回到“指针变量”这个词,其中的“变量”是什么意思?
指针我理解了,就是内存地址,为什么这里要加“变量”?
先来看看普通的变量涉及哪些要素。以a=10为例,a是一个变量名称10变量的值,这个值会存储在一块内存空间里,这里包含了下面三个核心元素:

  • 1、标识符(名字):一个我们人类能读懂的标签,比如 countusernamep
  • 2、值(Value):这个变量当前所代表的数据内容,比如 5, “Alice”, 0x7ffeeddccbbaa。
  • 3、内存地址:操作系统必须在内存(RAM)中为其分配一块真实的物理空间存储值,这块空间有自己的地址。

类比到指针变量上,指针变量也会有变量名称,值和内存地址。只不过指针变量在其内存地址中存的值一定是一个内存地址。分解来看就是

  • 一个指针变量p,它有自己的地盘(内存空间和地址)
  • p的工作是持有另一个内存空间的地址
http://www.dtcms.com/a/360139.html

相关文章:

  • Nano Banana:下一代AI图像创作与编辑指南
  • [强网杯2019]随便注-----堆叠注入,预编译
  • 主网上线后生态极速扩张的 Berachain 生态,有哪些值得关注的项目?
  • Java全局异常处理器:优雅处理系统异常
  • 【Android】LayoutInflater 控件实例化的桥梁类
  • 【重学MySQL】九十五、Linux 下 MySQL 大小写规则设置详解
  • Java中的异常,枚举,泛型,代理
  • 人工智能知识体系全景图:从基础概念到2025年前沿技术(一)
  • 2025年8月个人工作生活总结
  • vsftpd的基本整理
  • 基于多模态大模型的PCB智能缺陷检测与分析
  • STM32F103C8T6的智能医疗药品存储柜系统设计与华为云实现
  • 设计模式八股
  • 算法题(196):最大异或对
  • 【系统分析师】高分论文:论网络系统的安全设计
  • 异步编程与面向对象知识总结
  • SDL3.0 学习随笔:其一
  • 暄桐:唯有认真思考过死亡,才足以应对日常
  • Deep Think with Confidence:llm如何进行高效率COT推理优化
  • Docker中Mysql容器忽略大小写
  • 卫星互联网:6G时代的关键基础设施与全球竞争格局
  • 记一次下载oneforall报错及解决方案
  • 企业数据湖:从混沌到秩序的分层设计与治理策略
  • 性能测试工具-SkyWalking
  • 事件驱动架构新范式:FastEvent 让领域事件开发变得优雅
  • 【HarmonyOS】天气预报 UI 的基本实现
  • KingbaseES JDBC 驱动详解:连接、配置与最佳实践
  • docker,数据卷
  • ES6 面试题及详细答案 80题 (13-21)-- 数组与字符串扩展
  • 【71页PPT】工业40及智能制造解决方案(附下载方式)