C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。
声明数组(也为定义数组)
在 C 中要声明一个数组,需要指定元素的类型和元素的数量,如下所示:
type arrayName [ arraySize ];
类型 数组名[数组大小];
典例:要声明一个类型为 double 的包含 10 个元素的数组 balance:
double balance[10];
数组的初始化:
double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};
在"[]"里的数在数组初始化的时候可以省略,但是操作习惯上不建议。
而在此创建数组中,balance[4] = 50.0;而不是balance[5] = 50.0;因为这就是访问数组中的索引,而索引是从0开始的,并非从1开始,所以建立一个5个数的数组的时候,索引时“[]”,里的数是从0开始,比如balance[0] = 1000.0;balance[4] = 50.0;数组的最后一个索引是数组的总大小减去 1。
上面介绍对数组的直接赋值初始化,还有一种使用循环初始化数组的方法:
#include<stdio.h>
int main() {
int i = 0;
int j = 0;
int a[5];
for (i = 0; i < 5; i++) //利用循环初始化数组
scanf_s("%d", &a[i]);
for(j = 0;j < 5;j++)
printf("%d ", a[j]); //利用索引打印出对应的数
return 0;
}
这种方式就是比较方便填写,缺点是每次都要重新填写数据,适合测试
const数组:该数组为只读数组,可调用,但是不可修改,一般用于固定某个数组的内容,形式为:const 类型 数组名[数组大小]。
部分初始化的数组:如果定义一个大小为5的数组,但是初始化的时候只赋值了4个数,那么接下来的数系统会自动赋值0。
二维数组:
结构如下:
int a[2][3]=
{
{1 , 2 , 3},
{4 , 5 , 6}
}; //两行三列
推荐写上面这种形式,但是下面这种形式也是可以的,合规的
int a[2][3]={ 1 , 2 , 3, 4 , 5 , 6 };
#include<stdio.h>
int main() {
const int days[] = { 31,28,31,30,31,30,31,31,30,30 }; //初始化一个只读数组
int index;
for (index = 0; index < sizeof(days) / sizeof(days[0]); index++)
printf("Month %2d has %d days.\n", index + 1, days[index]);
return 0;
} //sizeof(days) / sizeof(days[0]) 这个的结果是数组元素的个数计算
运行结果