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] = 4mat[1][0] = 5、mat[1][1] = 6
剩下的6个元素(包括mat[2][2])都会被自动初始化为0,因此选项中“mat[2][2]的值为0”的表述完全符合C标准的规定,判定正确是合理的。
内容的提问来源于stack exchange,提问作者Damn Vegetables
相关产品推荐
相关产品推荐

