(一)二维数组的定义
定义一维数组的一般格式:
类型标识符 数组名[整型常量表达式1][整型常量表达式2];
(1)"整型常量表达式1"表示第1维下标的长度,"整型常量表达式2"表示第2维下标的长度
(2)与一维数组一样,一个数组元素占用一个储存单元,每个储存单元占 4B ,即一个元素占4字节。
(3)二维数组的储存空间也是连续的,将二维数组元素按行依次储存。(可把二维数组看成若干个一维数组)
(4)一维下标a[0]、a[1]、a[2]、a[3]分别表示各行的首地址。
(5)a[3][4]在内存的存储方式
a[0]行 a[1]行 a[2]行
| a[0][0] | a[0][1] | a[0][2] | a[0][3] | a[1][0] | a[1][1] | a[1][2] | a[1][3] | a[2][0] | a[2][1] |…
//二维数组定义示例
#include<stdio.h>
#define N 8 //先宏定义一个符号常量N,代表整数8
int main()
{
int a[3][4]; //(1)定义一个整型数组,数组名为a,有12个数组元素
float b[10][9]; //(2)定义一个浮点型数组,数组名为b,有90个数组元素
int c[N][N]; //(3)定义一个整型数组,数组名为c,有64个数组元素
//错误的定义方式:
//int n=10; int d[n][10]; //此处n为变量名,不是常量表达式
//int n=10; int d[4][n]; //同上
//double e[6,5]; //一、二维下标需分开写
return 0;
}
//二维数组初始化示例
#include<stdio.h>
int main()
{
int a[3][4] = { {0,1,4,7},{0,2,5,8},{0,3,6,9} }; //按行给数组赋初值
//等价于:a[3][4] = {0,1,4,7,0,2,5,8,0,3,6,9};
//a[3][4]的初始化结果
//
// a[0]行 a[1]行 a[2]行
// | a[0][0] | a[0][1] | a[0][2] | a[0][3] | a[1][0] | a[1][1] | a[1][2] | a[1][3] | a[2][0] | a[2][1] |…
// | 0 | | 1 | | 4 | | 7 | | 0 | | 2 | | 5 | | 8 | | 0 | | 3 |
int b[3][4] = { {2},{4},{6} }; //对各行部分初始化
//b[3][4]的初始化结果
//
// b[0]行 b[1]行 b[2]行
// | b[0][0] | b[0][1] | b[0][2] | b[0][3] | b[1][0] | b[1][1] | b[1][2] | b[1][3] | b[2][0] | b[2][1] |…
// | 2 | | 0 | | 0 | | 0 | | 4 | | 0 | | 0 | | 0 | | 6 | | 0 |
int c[3][4] = { 27,20,73 }; //按储存顺序给部分元素初始化
//c[3][4]的初始化结果
//
// c[0]行 c[1]行 c[2]行
// | c[0][0] | c[0][1] | c[0][2] | c[0][3] | c[1][0] | c[1][1] | c[1][2] | c[1][3] | c[2][0] | c[2][1] |…
// | 27 | | 20 | | 73 | | 0 | | 0 | | 0 | | 0 | | 0 | | 0 | | 0 |
int d[][4] = { 1,2,3,4,5,6,7,8,9,10 }; //不指定一维下标时,根据初始化情况决定
//一维下标乘二维下标的值 >= "数组长度"
//该二维数组d的长度为10,二维下标为4,得出一维下标为3
//等价于d[3][4] = {1,2,3,4,5,6,7,8,9,10} //按储存顺序给部分元素初始化
return 0;
}
//二维数组元素引用示例
#include<stdio.h>
int main()
{
int a[3][4], i, j;
for (i = 0; i < 3; i++) //二维数组的输入
{
for (j = 0; j < 4; j++)
{
printf("请输入a[%d][%d]的值:", i, j);
scanf_s("%d", &a[i][j]);
}
}
printf("a[3][4] = {");
for (i = 0; i < 3; i++) //二维数组的输出
{
for (j = 0; j < 4; j++)
{
printf("%3d,", a[i][j]);
}
}
printf(" }");
return 0;
}