使用二维数组
核心代码
/// @brief 可变二维数组的输入
/// @param arr new出来的二维数组
/// @param row 行
/// @param col 列
void printArr3(int **arr,int row,int col){
for (int i = 0; i < row; i++){
for (int j = 0; j < col; j++){
printf("%d ", arr[i][j]);
}
printf("\n");
}
printf("=====printArr3======\n\n");
}
使用案例
int row = 3, col = 5;
// 分配指向行指针的内存
int **arr = (int**)malloc(row * sizeof(int*));
for (int i = 0; i < row; i++) {
// 为每一行分配内存
arr[i] = (int*)malloc(col * sizeof(int));
// 填充数据
for (int j = 0; j < col; j++) {
arr[i][j] = i * col + j + 1;
}
}
printArr3(arr, row, col);
// 释放内存
for (int i = 0; i < row; i++){
free(arr[i]);
}
free(arr);
输出
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
=====printArr3======
单个数组模拟二维数组
核心代码
/// @brief 单个数组模拟二维数组
/// @param arr 数组
/// @param row 行
/// @param col 列
void printArr4(int * arr ,int row,int col){
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
printf("%d ", *(arr + i * col + j));
}
printf("\n");
}
printf("=====printArr4======\n\n");
}
使用案例
int row = 3, col = 5;
// 为整个二维数组分配内存
int *arr2 = (int*)malloc(row * col * sizeof(int));
// 填充数据
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
*(arr2 + i * col + j) = i * col + j + 1;
}
}
printArr4(arr2, row, col);
// 释放内存
free(arr2);
输出
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
=====printArr4======