%%
# 纲要
> 主干纲要、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