struct child {
    char name[32];
    int height;
};

struct child group_a[8];

I'd like to initialise every child in group_a with the same name and height, for example name = "XXX" and height = "100".

有没有比struct child group_a[8] = {{"XXX", 100}, {"XXX", 100}, ..., {"XXX", 100}}更快的速度?

推荐答案

如果没有更深层的预处理器魔法,就无法在标准C中完成.但是,在指定的初始值设定项中有一个范围扩展.主要编译器(GCC、CLANG、Intel)支持它.

struct child group_a[] = {
  [0 ... 7] = { .name = "XXX", .height = 100 }
};

C++相关问答推荐

为指针 struct 创建宏

当包含头文件时,gcc会发出隐式函数声明警告

InetPton()函数无效的IP地址

malloc实现:判断正确的分配对齐

如何创建由符号组成的垂直结果图形?

使用NameSurname扫描到两个单独的字符串

如何调试LD_PRELOAD库中的构造函数?

函数的限制限定指针参数允许优化调用方函数吗?

在句子中转换单词的问题

为什么指针运算会产生错误的结果?

将变量或参数打包到 struct /联合中是否会带来意想不到的性能损失?

如何将C中的两个字符串与从文件接收的字符串中的字符数进行比较

如果格式字符串的内存与printf的一个参数共享,会发生什么情况?

合并对 struct 数组进行排序

通过对一个大的Malloc内存进行切片来使用Malloc的内存片

不带Malloc的链表

通过char*访问指针的对象表示是未定义的行为吗?

在分配内存后使用指针是未定义的行为吗?

是否可以在多字 C 类型中的任何位置混合存储和类型限定符?

如何根据当前舍入方向将float转换为int?