【声明】除Thinking外完全摘自《C Primer中文版》。本渣仅做读书笔记学习之用。
C99增加了一种新特性L:指定初始化项目(designated initalizer)。此特性允许选择对某些元素进行初始化。
C99规定,在初始化列表中使用带有方括号的元素下标可以指定某个特定的元素:
int days[MONTHS] = {31, 28, [4] = 31, 30, 31, [1] = 29};
1 31
2 29
3 0
4 0
5 31
6 30
7 31
8 0
9 0
10 0
11 0
12 0
从输出结果可以看出指定初始化项目有两个重要特性:
1、如果在一个指定初始化项目后跟有不止一个值,如[4] = 31,30,31中这样,则这些数值用来对后续的数组元素初始化。也就是说,把31赋给days[4]后,接着把30,31赋给days[5], days[6];
2、如果多次对一个元素进行初始化,则最后一次有效。
Thinking:
int days[MONTHS] = {31, 29, 31, 30, [0] = 29, 30, 31};
输出结果为
1 29
2 30
3 31
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
12 0