数组的初始化

我们可以在定义数组的同时赋值(初始化):

1
int a[10]={12, 19, 22 , 993, 344};

表示只给 a[0]~a[4] 5个元素赋值,而后面 5 个元素自动初始化为 0。

当赋值的元素少于数组总体元素的时候,剩余的元素自动初始化为 0:

  • 对于short、int、long,就是整数 0
  • 对于char,就是字符 ‘\0’
  • 对于float、double,就是小数 0.0

我们可以通过下面的形式将数组的所有元素初始化为 0:

1
2
3
int nums[10] = {0};
char str[10] = {0};
float scores[10] = {0.0};

由于剩余的元素会自动初始化为 0,所以只需要给第 0 个元素赋值为 0 即可。

只能给元素逐个赋值,不能给数组整体赋值。例如给 10 个元素全部赋值为 1,只能写作:

1
int a[10] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1};

而不能写作:

1
int a[10] = 1;

如给全部元素赋值,那么在定义数组时可以不给出数组长度。例如:

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

等价于

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

最后,我们借助数组来输出一个 4×4 的矩阵:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
int main()
{
int a[4] = {1, 2, 3, 4};
int b[4] = {5, 6,7, 8};
int c[4] = {9, 10, 11, 12};
int d[4] = {13,14, 15,16};
printf("%-9d %-9d %-9d %-9d\n", a[0], a[1], a[2], a[3]);
printf("%-9d %-9d %-9d %-9d\n", b[0], b[1], b[2], b[3]);
printf("%-9d %-9d %-9d %-9d\n", c[0], c[1], c[2], c[3]);
printf("%-9d %-9d %-9d %-9d\n", d[0], d[1], d[2], d[3]);
return 0;
}

运行结果:

z0Gixe.png