数组
所谓数组,是有序的元素序列。 [1] 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。 [1] 这些无序排列的同类数据元素的集合称为数组。
数组是用于储存多个相同类型数据的集合。
数组是一种批量定义变量的方法。(最后一个放有"/0")
一维数组:
定义:类型 数组名[n];
定义n个同一类型的变量。
使用:数组[下标];
下标范围 0~n-1;
初始化:和变量一样默认值是不确定的。
类型 数组名[n] = {v1,v2,v3,v3,....};
1、初始化数据不够,补0。
2、初始化数据丢弃(有警告)。
3、n值可以省略,编译器会根据初始化数据的个数来确定数组的长度。
sizeof(arr)/sizeof(arr[0]) 计算数组的长度。
越界:编译器不检查数组的下标,如果越界会造成的后果有
1、段错误
2、脏数据
3、一切正常
遍历:与for循环配合,使用循环变量当数组的下标。
int arr[100];
for(int i=0; i<100; i++)
{
printf("%d",arr[i]);
}
变长数组:数组的长度编译时不确定,程序运行时可以加长
优点:节省空间
缺点:不能初始化
二维数组:相当把变量排一个方阵。
定义:类型 数组名[行数][列数];
使用:数组名[行下标][列下标];
下标从0开始,到数量-1。
初始化:类型 数组名[行数][列数] = {{},{},{}};
遍历:双层for循环配合,外层负责行,内层负责列。
int arr[10][10];
for(int i=0; i<10; i++)
{
for(int j=0; j<10; j++)
printf("%d",arr[i][j]);
}
注意
变长数组:数组在编译时长度可以先不确定,在运行期间可以根据实际情况来确定数组的长度,但是一旦确定下来就不能再变量。
变长数组不能初始化,因为数组的初始化是由编译器帮助完成的,而编译期间不能确定数组的长度,所以不能初始化。