一维数组
#include<stdio.h>
#define MAX 15
int main()
{
int a[MAX] = {0,1,2,3,4,5,1,1,1,1,1,1,1,1,1},b[MAX] = {0,1,2},c[MAX];
int static d[MAX];
for( int i = 0; i < MAX; i++ )
printf("%8d %8d %8d %8d\n",a[i],b[i],c[i],d[i]);
return 0;
}
程序运行结果如下:
0 0 7541584 0
1 1 0 0
2 2 1 0
3 0 0 0
4 0 -1 0
5 0 -1 0
1 0 1 0
1 0 0 0
1 0 1 0
1 0 0 0
1 0 4203833 0
1 0 0 0
1 0 3 0
1 0 0 0
1 0 51 0
--------------------------------
Process exited after 0.03954 seconds with return value 0
请按任意键继续. . .
由此可知,数组可以一一赋值,也可以对其中部分元素进行初始化。
静态存储的数组如果没有进行初始化,或部分初始化,则剩余元素自动赋值为0.
而对数组b前3个元素进行赋初值,其余元素的值并不确定,我也不知道为什么程序运行结果竟然后面都是0.
二维数组
#include<stdio.h>
#define TEST 3
int main()
{
int a[TEST][TEST] = {1,2,3,4,5,6,7,8,9};
int b[TEST][TEST] = {1,2,3,4};
int c[][TEST] = { {1,2,3}, {4,5,6}, {7,8,9} };
for( int i = 0; i < TEST; i++ ){
for(int j = 0; j < TEST; j++ ){
printf("%8d%8d%8d\n",a[i][j],b[i][j],c[i][j]);
}
}
return 0;
}
```运行结果如下:
1 1 1
2 2 2
3 3 3
4 4 4
5 0 5
6 0 6
7 0 7
8 0 8
9 0 9
--------------------------------
Process exited after 0.05171 seconds with return value 0
请按任意键继续. . .
初始化二维数组是建立在一维数组基础之上的,二维数组的初始化也可以针对部分元素,数组内未被初始化的元素将被统一赋值为0.
初始化时也可以省略内部的花括号,只保留最外面的花括号。只要保证初始化的数值个数正确,效果相同。
若对全部元素都赋了初值,或分行赋值时在初值表中列出了全部行,就可以省略行长度。
多维数组
前面讨论的二维数组相关内容都适用于三维或更多维的数组。处理时通常要使用多重嵌套循环。