C99提供了使用element-by-element
和&amp ;;初始化数组的功能。 designated
方法一起作为:
int a[] = {2,1,[3] = 5,[5] = 9,6,[8] = 4};
运行代码时:
#include <stdio.h>
int main()
{
int a[] = {2,1,[3] = 5,[0] = 9,4,[6] = 25};
for(int i = 0; i < sizeof(a)/sizeof(a[0]); i++)
printf("%d ",a[i]);
return 0;
}
(注意 Element 0
初始化为2
,然后由指定人[0]
再次初始化
到9
)
我原以为element 0
(2
)将被9
替换(作为指示符[0] = 9
)
因此o / p将成为
9 1 0 5 4 0 25
不幸的是我错了,因为o / p来了;
9 4 0 5 0 0 25
对意外o / p的任何解释?
答案 0 :(得分:3)
使用指定的初始值设定项与元素初始值设定项相结合意味着基于指定的初始值设定项的位置。
所以,如果你这样做:
int a[] = {2, 1, [3] = 5, 6};
结果应该是:
2 1 0 5 6
不
2 1 0 6
请注意,6占据初始值设定项中的位置3,但其结果位置由前面指定的初始值设定项(使用位置3)隐含。指定初始化程序使用的位置后面的位置是4,因此这是放置6的位置。
答案 1 :(得分:1)
使用初始化程序初始化数组的过程基本上是: