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

C备忘录~2 “int *p[3]”和“int (*p)[3]”补充

既然“int (p)[3]:p 先和 * 结合 ---> 指针。剩下 int [3] ---> 指向的是数组。”
那为什么int(
p)[3]={11,22,33} 不可以呢?


这个问题问到了 C 语言最核心的“灵魂”:内存分配

虽然你已经通过优先级搞清楚了 p 是一个指针,但 int (*p)[3] = {11, 22, 33} 失败的原因在于:指针只是一个“导游”,它自己并不拥有一座“宾馆”。

让我们拆开来看这行代码执行时,内存里到底发生了什么:

1. 指针不产生数据空间

当你写 int a[3] = {11, 22, 33} 时,编译器做了两件事:

  1. 在内存里圈出 12 个字节(3 个 int)的空间。
  2. 把 11, 22, 33 填进去。

当你写 int (*p)[3] 时,编译器只做了一件事:

  1. 在内存里圈出 8 个字节(1 个指针变量 p 的空间)。

矛盾点出现了: 你现在手里只有一个 8 字节的指针 p,你却试图给它塞进 12 字节的实际数据 {11, 22, 33}。这就像你试图把三头大象(数据)关进一个写着“大象馆地址”的信封(指针变量)里。信封会被撑爆的!


2. 语法的强制要求

在 C 语言的初始化规则中:

  • 数组int a[3])可以用 {...} 进行初始化,因为 {...} 是用来填充连续存储空间的内容。
  • 指针int *pint (*p)[3])只能用地址来初始化。

所以,编译器看到 int (*p)[3] = {11, 22, 33} 会很困惑:

“你定义了一个用来存地址的变量 p,为什么却塞给我一串数字?你是想让我把地址 11 存进 p 吗?但这也不对啊,后面还有 2233 没处放呢!”


3. 如何让它变得合法?

如果你一定要用这个 p,你必须先让它指向一个已经存在的、有空间的数组:

int a[3] = {11, 22, 33};  // 1. 申请空间并存入数据
int (*p)[3] = &a;         // 2. 把这块空间的“门牌号”给指针 p

或者,在极少数的高级用法中,你可以强行给它一个地址(虽然这很危险):

// 假设地址 0x7ffffff 是一个合法的、包含3个int的数组起始点
int (*p)[3] = (int (*)[3])0x7ffffff; 

💡 总结一个自学的小经验

自学指针时,请务必记住这句“咒语”:
指针只是一个记录地址的变量,它永远不会自动为你创造存储数据的空间。

  • 数组 = 房子(里面能住人,即存数据)。
  • 指针 = 门牌号(上面只写着房子在哪)。

你不能往“门牌号”里塞家具,你得先盖个“房子”,再把门牌号挂上去。

http://www.jsqmd.com/news/660245/

相关文章:

  • 别再用delay了!基于状态机重构你的TM1651显示函数(C语言版)
  • VMware Unlocker 3.0:打破平台壁垒,在Windows/Linux上完美运行macOS虚拟机的终极方案
  • RT-Thread实战:用ESP8266和Paho MQTT软件包,5分钟搞定物联网设备上云
  • Vivado Design Suite中route_design命令的高级选项与实战应用
  • 专业级开源音乐聚合播放器完全指南:从多平台搜索到个性化定制
  • 如何简单快速地获取网盘直链下载?这款免费开源工具给你完整解决方案
  • 2026年3月口碑好的抖音视频矩阵系统源头厂家推荐,ai数字人矩阵系统/短视频矩阵系统,抖音视频矩阵系统服务商有哪些 - 品牌推荐师
  • 5分钟快速上手Umi-OCR:免费离线OCR工具如何解决你的文字识别痛点
  • MelonLoader终极指南:3步掌握Unity游戏模组加载的完整解决方案
  • 2026最权威的十大AI写作助手实测分析
  • WeKnora入门教程:零基础搭建个人知识管理系统
  • 如何使用武商一卡通?使用心得与回收方法公开! - 团团收购物卡回收
  • 别再只画饼图了!用Kibana Lens玩转多层索引、树状图和公式计算
  • Penpot实战:如何用这个开源工具搞定你的下一个产品原型(附交互演示技巧)
  • ncmdumpGUI:Windows平台网易云音乐NCM文件解密转换完整指南
  • 杉德斯玛特卡回收流程揭秘:如何选择靠谱平台 - 团团收购物卡回收
  • 保姆级教程:在国产RK3568板卡上从零搭建K3s边缘节点(含国内镜像加速)
  • MixMatch实战解析:从核心思想到PyTorch代码实现
  • 宝塔面板部署前端踩坑实录:从十几秒加载到秒开的完整优化指南(含Nginx配置与缓存策略)
  • DeepSeek-OCR-WEBUI使用教程:图片转文字就这么简单
  • CTF PWN入门实战:手把手教你用Ret2Libc绕过NX保护拿shell(附32/64位完整EXP)
  • Java Stream分组后顺序乱了?别慌,LinkedHashMap一招搞定(附源码解析)
  • 英语阅读_Einstein
  • 洛雪音乐助手:一个界面,全网音乐,你的终极免费播放器解决方案
  • SITS2026圆桌闭门共识:2024生成式AI投资已进入“负容错时代”,3个必须立即审计的财务与合规断点(含审计Checklist模板)
  • Windows AirPods电量显示终极指南:完整解锁苹果耳机全部功能
  • 从杂乱到洞察:手把手教你用Gephi的‘统计’与‘过滤’功能深挖网络数据
  • Zotero-OCR终极指南:3分钟为PDF文献添加可搜索文本层 [特殊字符]
  • 2026耐用型UPS不间断电源厂家推荐,靠谱供应商选择指南 - myqiye
  • 高校科研组紧急升级写作工具链:2026奇点大会闭门分享的4套学科定制化AI写作引擎(覆盖CS/生物/材料/社科,限前500所高校申领)