如果初始化时指定的的元素个数比数组大小少,剩下的元素都回被初始化为 0。例如
int v5[8]={1,2,3,4};
等价于
int v5[8]={1,2,3,4,0,0,0,0};如果不对数组进行初始化,即在定义的同时没有用列表初始化,那么局部数组的值就取决于编译器而对程序员来说就是不可预料的了
-
gcc扩展:
#include <stdio.h>
int array[10] =
{
[0 ... 9] = 0,
[8] = 8,
[2 ... 2] = 2,
[5 ... 7] = 5
};
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
printf("%d/n", array[i]);
return 0;
}
输出0
0
2
0
0
5
5
5
8
0
a. gcc的数组初始化中,任意元素都能够被重复初始化,并且以最后一次初始化值为准。
b. 初始化单个元素的方法有两种 [index] = value, [index … index] = value.
c. 实验表明,如果index超出了数组最大下标,编译器报错