- 定义
由行和列组成的二维表格形式元素,二维数组其实也就是矩阵
基本格式:数据类型 数组名[行长度][列长度];
行长度为二维数组行的个数,必须为常量表达式,不能为变量
列长度为二维数组每一行列的个数,必须为常量表达式,不能为变量
二维数组包含的元素的个数是:行长度*列长度,其中每个元素占据的字节数是
sizeof(数据类型),故二维数组占据的内在字节数是 行长度*列长度*sizeof(数据类型)
举些例子:
1.定义一个二维数组a,包含4行4列的元素,每个元素均为int类型
int a[4][4];
2. 定义二维数组name,包含5行10列元素,每个元素均为char类型
char name[5][10];
- 二维数组的内存本质
在内存中为二维数组分配一块连续的内存空间,空间大小为 行长度*列长度*sizeof(数据类型)
数组元素在内存中以行为主序进行存储(即先存储第一行元素,再存储第二行元素,...)
第一行第一个元素 |
第一行第二个元素 |
第二行第一个元素 |
第二行第二个元素 |
- 引用
不能引用整个二维数组,只能引用单个数组元素,再使用数组遍历的形式引用数组的每个元素
二维数组引用基本格式:数组名[行标][列标]
行标和列标都是从0开始,最大下标为 行(列)标长度-1
数组元素可以出现在任意表达式中,和普通变量作用相同
/*把a[0][0]处的元素变成原来的2倍*/
a[0][0] *=2;
/*给a[0][1]元素输入数据*/
scanf_s("%d",&a[0][1]);
/*输出数组a的第一行所有元素*/
for(int j=0;j<COL_LENGTH;j++){
printf("%d",a[0][j]);
}
- 二维数组遍历
for(i=0;i<ROW_NUMBER;i++){
for(j=0;j<COL_NUMBER;j++){
//a[i][j] 表示当前第i+1行第j+1列数组元素
}
}