【嵌入式】C语言高级编程

您所在的位置:网站首页 结构体套结构体怎么初始化 【嵌入式】C语言高级编程

【嵌入式】C语言高级编程

2024-07-13 19:21| 来源: 网络整理| 查看: 265

00. 目录

文章目录 00. 目录01. 初始化概述02. 指定初始化数组元素03. 指定初始化结构体成员变量04. Linux内核中应用05. 初始化总结06. 附录

01. 初始化概述

在标准 C 中,当我们定义并初始化一个数组时,常用方法如下:

int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8};

按照这种固定的顺序,我们可以依次给 a[0] 和 a[8] 赋值。因为没有对 a[9] 赋值,所以编译器会将 a[9] 默认设置为0。当数组长度比较小时,使用这种方式初始化比较方便。当数组比较大,而且数组里的非零元素并不连续时,这时候再按照固定顺序初始化就比较麻烦了。

比如,我们定义一个数组 b[100],其中 b[10]、b[30] 需要初始化,如果还按照前面的固定顺序初始化,{}中的初始化数据中间可能要填充大量的0,比较麻烦。

那怎么办呢?C99 标准改进了数组的初始化方式,支持指定任意元素初始化,不再按照固定的顺序初始化。

int a[100] ={ [10] = 1, [30] = 2};

通过数组索引,我们可以直接给指定的数组元素赋值。除此之外,一个结构体变量的初始化,也可以通过指定某个结构体域直接赋值。

因为 GNU C 支持 C99 标准,所以 GCC 编译器也支持这一特性。甚至早期不支持 C99,只支持 C89 的 GCC 编译器版本,这一特性也被当作一个 GCC 编译器的扩展特性来提供给程序员使用。

02. 指定初始化数组元素

在 GNU C 中,通过数组元素索引,我们就可以给某个指定的元素直接赋值。

程序示例

#include int main(void) { int i = 0; int a[10] = {[3] = 3, [5] = 5, [8] = 8}; for (i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3