447 字
2 分钟
--
数组的集成初始化
2023-10-13

数组的集成初始化#

基本概念#

数组的集成初始化:不进行初始化 vs 进行初始化。

定义数组时通常有两种办法。

像是这样的初始化:

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

这样子不规定有多少元素,而是由计算机代替人来数数的初始化,叫做集成初始化。

指定元素数量的情况#

当然你也可以规定有多少个元素,但是如果规定的元素多与你在大括号中给定的数字,就会变成0,像是这样:

int a[10] = {1, 2, 3};
int i;
for(i = 0; i < 10; i++) {
printf("%d", a[i]);
}
// 输出数组里的所有数字,你会得到:1230000000

剩下没有给值的元素的值都变成了0。

全部赋0#

如果想要全部赋0也很简单,只需要这样:

int a[i] = {0};

只要这样就可以让一共有i个元素的数组a的所有元素的值都变为了0。

指定位置赋值#

如果想要给数组中的每一项都单独赋值,也可以使用这样的办法:

int a[10] = {
[0] = 1, [2] = 3, 5,
};

这行代码的意思是,在大括号内,中括号的数字代表了数组的元素,即a[0]=1,a[2]=3,默认的情况下是相连的,所以a[3]就是5,不需要繁琐的重复写。在这里,a[1]没有赋值,得到的值是0。

规则总结#

  • 用[n]来定位
  • 没有定位的数据的情况下就接着前面的位置
  • 其他位置的值补0

补充说明#

也可以不给数组的大小让编译器自己统计。

集成初始化适合初始数据稀疏的数组。

数组的集成初始化
https://vilstia.org/posts/学习笔记/c/数组的集成初始化/
作者
琴泠 - Lumina Qin
发布于
2023-10-13
许可协议
CC BY-NC-SA 4.0