创建一个建立二维数组的函数返回值为二维数组,
时间: 2024-11-16 09:14:08 浏览: 0
函数:int **array2(int **arr,int n,int m) , C++ 输入二维数组 ,返回值二维数组
5星 · 资源好评率100%
创建一个返回二维数组(通常是整型或字符型)的函数,你可以定义一个这样的函数,接受所需行数和列数作为参数,然后动态分配内存来存储这个数组。以下是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 假设我们使用整型数组
typedef struct {
int **data; // 指向二维数组的指针
int rows;
int cols;
} Array2D;
Array2D* create2DArray(int rows, int cols) {
// 计算总元素个数
int total_elements = rows * cols;
// 动态分配内存
Array2D *array = (Array2D*) malloc(sizeof(Array2D));
if (!array) {
printf("Memory allocation failed.\n");
return NULL; // 如果无法分配内存,返回NULL
}
array->rows = rows;
array->cols = cols;
array->data = (int **)malloc(total_elements * sizeof(int *));
if (!array->data) {
free(array); // 先释放先前分配的空间
printf("Memory allocation for data pointers failed.\n");
return NULL;
}
// 分配每一行的内存并初始化为0
for (int i = 0; i < rows; i++) {
array->data[i] = (int*)malloc(cols * sizeof(int));
if (!array->data[i]) {
for (int j = 0; j < i; j++) {
free(array->data[j]); // 释放已经分配的行
}
free(array->data);
free(array);
printf("Memory allocation for row %d failed.\n", i + 1);
return NULL;
}
for (int j = 0; j < cols; j++) {
array->data[i][j] = 0; // 初始化为0
}
}
return array;
}
// 示例用法
int main() {
int rows, cols;
printf("Enter number of rows and columns: ");
scanf("%d %d", &rows, &cols);
Array2D *my_array = create2DArray(rows, cols);
if (my_array) {
// 使用 my_array
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", my_array->data[i][j]);
}
printf("\n");
}
// 不要忘记在程序结束时释放内存
for (int i = 0; i < rows; i++) {
free(my_array->data[i]);
}
free(my_array->data);
free(my_array);
} else {
printf("Failed to create the array.\n");
}
return 0;
}
```
在这个例子中,`create2DArray`函数首先计算所需的总内存,然后逐级动态分配。记得在使用完后调用`free`来释放内存,防止内存泄漏。
阅读全文