一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第13天,点击查看活动详情。
二维数组常称为矩阵(matrix)。把二维数组写成行(row)和列(column)的排列形式,可以有助于形象化地理解二维数组的逻辑结构。
怎样定义二维数组
二维数组定义的一般形式:
类型说明符 数组名[常量表达式][常量表达式];
float a[3][4], b[5][10];
// 定义a:3 X 4(3行4列), b:5 X 10(5行10列)
怎样引用二维数组的元素
二维数组元素的表示形式为:
数组名[下标][下标]
// 数组元素可以出现在表达式中,也可以被赋值
二维数组的初始化
- 分行给二维数组赋初值,如:
int a[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}}; - 可以将所有数据写在一个花括号内,按数组元素在内存中的排列顺序对个元素赋初值。如:
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; - 可以对部分元素赋初值。如:
int a[3][4] = {{1}, {5}, {9}}; - 如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第1维的长度可以不指定,但第2维的长度不能省
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};等价于int a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12}系统会根据数据总个数和第2维的长度算出第1维的长度。
示例
- 将一个二维数组行和列的元素互换,存到另一个二维数组中。 a[2][3] = {{1,2,3}, {4,5,6}}
b[3][2] = {{1,4}, {2,5}, {3,6}}
// 2. 将一个二维数组行和列的元素互换,存到另一个二维数组中去。
int a[2][3] = {{1,2,3}, {4,5,6}};
int b[3][2], i, j;
printf("array: a \n");
for (i = 0; i <= 1; i++) { // 处理a数组中的一行中各元素
for (j = 0; j <= 2; j++) { // 处理a数组中某一列中个元素
printf("%5d", a[i][j]); // 输出a数组的一个元素
b[j][i] = a[i][j]; // 将a数组元素的值赋给b数组相应的元素
}
printf("\n");
}
printf("arry b: \n"); // 输出b数组各元素
for (i = 0; i <=2; i++) { // 处理b数组中一行中各元素
for (j = 0; j <=1; j++) { // 处理b数组中一列中个元素
printf("%5d", b[i][j]); // 输出b数组的一个元素
}
printf("\n");
}