Sunset
447 字
2 分钟
数组的集成初始化
数组的集成初始化
基本概念
数组的集成初始化:不进行初始化 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
补充说明
也可以不给数组的大小让编译器自己统计。
集成初始化适合初始数据稀疏的数组。