翻了一下书,C++是如下说法(现代C的说法不大清楚):
如果没有显式提供元素初值,则数组元素会像普通变量一样初始化:
1.在函数体外定义的内置数组,其元素均初始化为0;
2.在函数体内定义的内置数组,其元素无初始化;
3.不管数组在哪里定义,如果其元素为类类型,则自动调用该类的默认构造函数进行初始化;如果该类没有默认构造函数,则必须为该数组的元素提供显式初始化。
如果指定了数组维数,那么初始化列表提供的元素个数不能超过维数值。如果维数大于列出的元素初值个数,则只初始化前面的数组元素;剩下的其他元素,若是内置类型则初始化为0,若是类类型则调用该类的默认构造函数进行初始化。