二维数组:
一维数组可以看成把变量排成一排,通过编号访问
二维数组相当于把变量排成一个矩形,通过行号和列号访问
定义:
类型 数组名[行数][列数];
int arr[3][5]
使用:数组名[行下标][列下标]
行下标:0~行数-1
列下标:0~列数-1
遍历:一般需要与双层for循环配合,一般的外层循环负责遍历行
内层循环负责遍历列
for(int i=0;i<行数;i++)
{
for(int j=0;j<列数;j++)
{
printf("%d",arr[i][j]);
}
printf("\n");
}
初始化:
类型 数组名[行数][列数]={{第一行},{第二行}....}
练习1:
定义一个5*5二维数组并初始化,找出最大值的坐标
注意:物理上没有所谓的多维数组,所有的多维数组都是用一维数组
模拟的
练习2:
定义一个二维数组并初始化,找出最小值的坐标,计算出
该位置周围一圈的和
变长数组:
定义数组时,使用变量作为数组的长度,这种叫做变长数组
由于编译期间变长数组的长度还不确定,只有当
运行到数组的定义语句时,他的长度才真正确定下来,而且
确定后不能改变
优点:可以根据实际情况确定数组的长度,从而达到节约内存的目的
缺点:不能使用初始化语法,只能循环赋值
注意:无论什么数组,一旦数组的长度确定之后,本次运行过程中都不能发生变化