4-二维数组
原创...大约 2 分钟
二维数组的概念
二维数组是数组的数组,可以认为是一个表格。也可以吧二维数组看成国际象棋棋盘、城市街区等的网络。
arr[0][0] | arr[0][1] | arr[0][2] | arr[0][3] | |
---|---|---|---|---|
arr[1][0] | arr[1][1] | arr[1][2] | arr[1][3] | |
arr[2][0] | arr[2][1] | arr[2][2] | arr[2][3] |
以上为3 X 4的二维表格
二维数组的声明
二维数组声明需要给出行数和列数
比如:
int a[2][3];
嵌套花括号{}
用于逐行初始化元素,如下:
int a[2][3]={
{3,2,6},
{4,5,20}
};
也可以采用以下形式
int a[2][3]={{3,2,6},{4,5,20}};
:::tips 前者提供了更清晰的可视化阵列结构 :::
打印数组:
#include <stdio.h>
void print_arr(int rows, int cols, int x[2][3]);
int main() {
int a[2][3]={
{3,2,6},
{4,5,20}
};
print_arr(2, 3, a);
return 0;
}
void print_arr(int rows, int cols, int x[2][3]){
for(int i = 0; i < rows; i++){
for(int j = 0; j < cols; j ++ ){
printf("%d",x[i][j]);
if (j != cols - 1){
printf(" ");
}
}
printf("\n");
}
}
⚠️注意
一个数组可以有两个以上的维度
例如:
#include <stdio.h>
int main() {
// 声明并初始化一个三维数组
int a[5][3][4] = {
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
},
{
{13, 14, 15, 16},
{17, 18, 19, 20},
{21, 22, 23, 24}
},
// ... 可以继续添加更多的初始化值
};
// 以示例方式打印数组中的某个值
printf("a[1][2][3] = %d\n", a[1][2][3]); // 输出: a[1][2][3] = 24
return 0;
}
:::tips a[5][3][4] 是一个有 5 个元素的数组,每个元素存储 3 个元素,且这三个元素的每个元素又存储 4 个元素。 :::
填空,下面二维数组有多少个元素?
int arr[2][5];
2 x 5 = 10
访问二维数组
要访问二维数组的元素,需要行索引和列索引。
例如,以下语句打印元素的值,然后分配一个新值:
#include <stdio.h>
int main() {
int a[2][3]={
{3,2,6},
{4,5,20}
};
printf("Element 3 in row 2 is %d\n", a[1][2]); /*20*/
a[1][2] = 25;
printf("The new element 3 in row 2 is %d\n", a[1][2]); /*25*/
return 0;
}
就像 for 循环遍历一维数组一样,嵌套的 for 循环用来遍历二维数组
#include <stdio.h>
int main() {
int a[2][3] = {
{3, 2, 6},
{4, 5, 20}
};
int k, j;
/* 打印数组内容 */
for (k = 0; k < 2; k++) {
for (j = 0; j < 3; j++) {
printf(" %d", a[k][j]);
}
printf("\n");
}
return 0;
}
求和:
#include <stdio.h>
int sum_fn(int row, int col, int x[2][3]); //todo 注意二维数值的声明
int main() {
int a[2][3] = {
{3, 2, 6},
{4, 5, 20}
};
printf("Sum:%d", sum_fn(2, 3, a));
return 0;
}
int sum_fn(int row, int col, int x[2][3]){
int sum = 0;
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
sum += x[i][j];
}
}
return sum;
}
练习:数组旋转
Powered by Waline v3.1.3