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

C语言多维数组未初始化元素是否会被自动填充为0?

不完全初始化的C语言数组元素是否会被隐式设为0?

是的,不完全初始化的数组剩余元素会被隐式初始化为对应类型的零值,这是C标准明确保证的行为,并非编译器的特殊扩展。

在C语言的标准规则中,当对数组进行部分初始化时,所有未被显式赋值的元素都会被自动初始化为该类型的零值:

  • 对于int等整型类型,零值是0
  • 对于浮点类型,零值是0.0
  • 对于指针类型,零值是NULL

结合你提到的题目例子:
int mat[3][4]={1,2,3,4,5,6}; 是一个包含3行4列的二维数组,总计12个int元素。显式给出的6个值会按顺序填充数组的前6个位置:

  • mat[0][0] = 1、mat[0][1] = 2、mat[0][2] = 3、mat[0][3] = 4
  • mat[1][0] = 5、mat[1][1] = 6

剩下的6个元素(包括mat[2][2])都会被自动初始化为0,因此选项中“mat[2][2]的值为0”的表述完全符合C标准的规定,判定正确是合理的。

内容的提问来源于stack exchange,提问作者Damn Vegetables

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:12:36