本章主要讲述C语言的数组
C语言可以通过数组来存储一系列固定大小元素的数据,是一系列相同数据类型变量的顺序集合。有了数组,计算机可以更加方便的处理大量相关数据。例如,可以用数组储存10个char类型字符或12个int类型的值。
使用数组时,通过声明数组来告诉编译器数组所含的元素的数量和这些元素的数据类型,编译器根据这些信息正确的创建数组。访问数组时,通过数组名以及整数下标(索引)来访问数组中一个个单独的项或元素,其中数组元素的编号从0开始(编号0被称为基索引),以此类推。数组可以使用的数据类型和普通变量相同。
声明如下所示:
int array[12]; //含12个int类型元素的数组,数组名array
array[2] = 3; //赋值,把3存入数组的第3个元素中
scanf("%d",&array[3]); //利用scanf函数将一个整型值存入数组第四个元素中
int month[12] = {1,2,3,4,5,6,7,8,9,10,11,12}; //直接初始化分配数组中全部元素
int arr[8] = {[5] = 42,43,44}; //把arr[6]初始化为42,arr[7]为43,arr[8]为44,其余元素被设置为0
通过for循环使用数组:
int index,score[10];
for (index = 0;index < 10;index++)
scanf("%d",&score[index]);
//通过for循环存入10个元素在数组score中
多维数组:
int monthday[3][4] =
{
{12,13,14,15},
{16,17,18,19},
{20,21,22,23}
};
//这是一个二维数组,主数组有3个元素,即{}的个数,每个元素是内含4个元素的数组,即{}中元素的个数,共有三行四列,多维数组同理
int monthday[3][4] = {12,13,14,15,16,17,18,19,20,21,22,23}; //与上面等价
int val = monthday[2][3]; //访问并获取数组中第三行第四个元素
char names[6][50]={"马超","关平","赵云","张飞","关羽","刘备"}; //二维数组存放字符串,读取时当一维数组使用
注意:
1.数组的元素被依次储存在内存中相邻的位置。
2.字符串是一种char类型的数组,该数组末尾包含一个表示字符串末尾的空字符\0。
3.若想将数组设置为只读,则可使用const声明和初始化数组,例如const int days[7];
4.若在声明数组时未使用储存类别关键字,如static,则默认为自动储存类别,如果初始化时只初始化部分元素,则剩余元素值默认被设置成0。
5.初始化数组时如果省略方括号中的数字,则编译器会根据初始化列表中的项数来确定数组的大小。
6.如果再次初始化已经被初始化的元素,后面的初始化将会取代之前的初始化。
7.为了防止多次使用数组后数组长度修改麻烦的问题,建议使用符号常量表示数组大小。
8.最好不要使用变长数组,即类似int a[n]; 这种表达方式,虽然可以通过编译。
9.多维数组初始化时可以省略内部的花括号,只保留最外面一对花括号,若初始化的数值不够,则没有被初始化的元素统一被初始化为0。
10.通常,使用n维数组需要使用n重嵌套循环处理。
11.定义二维数组的时候对其进行初始化,可以省略第一维的维数,但是不能省略第二维或者更高维的大小,编译器会根据你的初始化语句自动决定第一维度。