 
- UID
- 852722
|
3. 指派初始值(Designated Initializers)
指派初始值这个特性是 C99 增加的,它允许我们直接初始化数组中特定的元素。C99 以前,如果我们要初始化数组中的某个元素,如第三个元素,必须同时初始化它之前的元素。例如:
Int Iarr[10] = { 0, 0, 300 };
而 C99 中,我们可以这样初始化特定的元素:
Int Iarr[10] = { [2] = 300 }; /* 指派初始化 Iarr[2] 为 300 */
其余的元素都会被初始化为 0 。下面我们来看一个小程序。
#Include <Stdio.H>
Int Main(Void)
{
Int Iarr[5] = { 6, 3, [3] = 1, 5, [1] = 8};
Printf("%D
", Iarr[0]);
Printf("%D
", Iarr[1]);
Printf("%D
", Iarr[2]);
Printf("%D
", Iarr[3]);
Printf("%D
", Iarr[4]);
Return 0;
}
输出为:
6
8
0
1
5
从中可以看出两点:
A. 如果指派初始值后面还有值,则后面的值会被用于初始化后续的元素。上例中,
Iarr[3] 被初始化为 1 ,它后续的元素 Iarr[4] 被初始化为 5。
B. 如果初始化列表中多次出现对某元素的初始化,则以最后一次为准。上例中,
Iarr[1] 先被初始化为 3,然后被 [1] = 8 指派初始化为 8。 |
|