You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何C语言中允许使用数组的数组?

为何C语言中允许使用数组的数组?

最近翻C17语言标准的时候,我突然卡壳了——哎,为啥C里能用上数组的数组啊?

抱着这个疑问往下挖,还真在标准的6.2.5“类型”章节的第20条找到了关键依据:

可以基于对象类型和函数类型构造任意数量的派生类型,规则如下:
—— 数组类型描述的是一组连续分配的非空对象集合,这些对象拥有特定的成员对象类型(称为元素类型)。只要指定数组类型,其元素类型就必须是完整类型。

说直白点,C的类型系统本来就支持一层一层堆叠派生类型,数组本身就是一种合法的派生类型,那自然能把另一个数组(只要它是完整类型)当成元素类型来定义新数组。比如我们常写的int my_arr[3][4];,本质上就是一个包含3个元素的数组,每个元素都是int[4]类型的数组,完全贴合标准里的数组类型定义,内存也是连续分配的,完全合规~

备注:内容来源于stack exchange,提问作者ALICEZzz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 16:22:59