nal*_*zok 2 c initialization multidimensional-array initializer-list
这是我练习册上的一个问题:
如果我们写
int a[][3]={{0},{1},{2}};,元素的值a[1][2]将是____.
关键是它的价值无法得知.由于语句不被授予在函数外部写入,因此矩阵不应简单地视为全局变量,它将所有元素初始化为0.但是,我认为初始化{{0},{1},{2}}器相当于{{0,0,0},{1,0,0},{2,0,0}},所以a[1][2]应该是0.谁错了,关键还是我?
PS:我写了这段代码:
#include <stdio.h>
int main()
{
    int a[][3]={{0},{1},{2}};
    printf("%d",a[1][2]);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)
它的输出正好是0.
你是对的,其余的值被初始化为默认值,在这种情况下为0.
标准的相关引用:
6.7.9初始化
- 如果括号括起的列表中的初始值设定项少于聚合的元素或成员,或者用于初始化已知大小的数组的字符串文字中的字符数少于数组中的元素,则聚合的其余部分应为隐式初始化与具有静态存储持续时间的对象相同.