数组学习
程序员文章站
2024-02-25 08:10:40
...
数组:
一、数组简介
什么是数组:变量的组合,是一种批量定义变量的方式
定义:类型 数组名[数量]
int arr[5]; == int a,b,c,d,e;
使用:数组名 [下标]
下标:从0开始到数量-1
遍历:与for循环配合使用,使用循环变量i当做数组下标
初始化:类型 数组名[数量] = {1,2,3…}
1、数组与普通变量一样默认值是随机,为安全也要对数组进行初始化
2、这种初始化语法只能在定义数组时使用,而且不能整体赋值
3、如果初始化数据过多,编译器会丢弃并且警告
4、如果初始化数据不足,编译器则补零
5、初始化数组长度时可以省略,编译器会自动统计数据的个数,然后告诉数组
sizeof(arr)/sizeof(arr[0]); == 数组长度
数组的越界:
为了程序的运行效率,不会检查数组的下标
数组越界的后果
1、一切正常
2、段错误
3、脏数据(指行为)
二、二维数组:
一位数组相当于把变量排成一排,通过编号访问
二维数组相当于把变量排成矩阵,通过行号和列号访问
定义:类型 数组名[行数][列数]
int a[3][2] = [0,0] [0,1]
[1,0] [1,1]
[2,0] [2,1]
使用:数组名[行下标][列下标]
遍历:需要与双层for循环配合,外层循环负责遍历行,内层循环负责遍历列
for(int i = 0;i < 3;i++)
{
for(int j = 0;j < 5;j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
初始化:类型 数组名[行数][列数] = {{第一行},{第二行},{第三行}};
注意:用上面的方法初始化时,前n行要加逗号最后一行不用加逗号
三、变长数组:
定义:使用变量作为数组的长度,在代码编译期间数组的长度时不确定的,当执行到数组定义语句时,长度才能确定下来,当数组长度确定后无法更改
优点:可以根据实际情况确定数组长度,节约内存空间
缺点:无法初始化