首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

数组基础知识讲解-3

数组基础知识讲解-3

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。
返回列表