%% # 纲要 > 主干纲要、Hint/线索/路标 # Q&A #### 已明确 #### 待明确 > 当下仍存有的疑惑 **❓<font color="#c0504d"> 有什么问题?</font>** # Buffer ## 闪念 > sudden idea ## 候选资料 > Read it later %% # 指定初始化(Designed initializers) C 语言中的 "指定初始化" 允许**在初始化结构体或数组时,显式地为特定的成员或元素指定值**,而无需按照顺序进行初始化。 > [!caution] > > - C++11 起支持**针对 "结构体/类" 的指定初始化**(在列表初始化中指定) > - C++20 中才引入了与 C 语言中支持的 "**针对==数组==的指定初始化器**" ### 数组的指定初始化 C99 中引入了数组的指定初始化器,支持对 "**指定索引**" 进行初始化。 ```c int arr[10] = { [3] = 42; // arr[3] = 42; [5] = 99; // arr[5] = 99 // 未指定的数组元素会被默认初始化为 `0`。 }; ``` > [!example] 示例 > > ![[_attachment/02-开发笔记/02-c/c-初始化相关.assets/IMG-c-初始化相关-39762FCE09835E7D8611E80E6A5B435F.png|332]] > ### 结构体的指定初始化 ```c struct Config { int id; char name[20]; int enabled; } int main() { struct Config conf = { .id = 42; .enabled = 1; // name 未被指定初始化,会被默认初始化为 {0},即空字符串 } } ``` <br><br> # 参考资料 # Footnotes