#include <stdio.h> #include <stdlib.h> #include <time.h> void allocate_array(int **arr, int rows, int cols) { // 分配二维数组内存空间 *arr = (int *)malloc(rows * sizeof(int *)); for (int i = 0; i < rows; i++) { (*arr)[i] = (int *)malloc(cols * sizeof(int)); } // 初始化二维数组 for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { (*arr)[i][j] = rand() % 100; } } } void print_array(int **arr, int rows, int cols) { for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { printf("%d ", arr[i][j]); } printf("\n"); } } int main() { srand(time(NULL)); int rows = 3; int cols = 4; int **arr; allocate_array(&arr, rows, cols); print_array(arr, rows, cols); // 释放内存空间 for (int i = 0; i < rows; i++) { free(arr[i]); } free(arr); return 0; }
时间: 2024-04-27 15:23:08 浏览: 86
SeqList.h #include <stdio.h> //包含标准输入输出流的头文件 #include <assert.h
这段代码实现了动态分配二维数组的内存空间,并对其进行初始化和打印操作。具体来说:
1. `allocate_array` 函数用于分配二维数组内存空间,并初始化数组元素。该函数的参数包括:
- `**arr`:指向二维数组的指针,该指针用于返回分配的内存空间。
- `rows`:二维数组的行数。
- `cols`:二维数组的列数。
在函数内部,首先通过 `malloc` 函数分配一维数组的内存空间,然后再通过循环为每个一维数组分配内存空间。最后,通过嵌套循环初始化二维数组的元素,使用 `rand` 函数生成随机数赋值。
2. `print_array` 函数用于打印二维数组的元素。该函数的参数与 `allocate_array` 函数相同。
在函数内部,通过嵌套循环遍历二维数组的所有元素,并使用 `printf` 函数打印元素的值。每行打印完毕后,使用 `printf` 函数打印换行符。
3. `main` 函数用于测试 `allocate_array` 和 `print_array` 函数。在函数内部,首先使用 `srand` 函数初始化随机数种子,然后定义二维数组的行数和列数。接着,定义一个指向二维数组的指针 `**arr`,并调用 `allocate_array` 函数分配内存空间。然后,调用 `print_array` 函数打印二维数组的元素。最后,通过循环释放二维数组的内存空间。
总之,这段代码实现了动态分配二维数组内存空间,并对其进行初始化和打印操作,可以作为学习动态内存分配的参考。
阅读全文