用malloc建立二维数组并集体赋值
时间: 2024-09-07 10:06:44 浏览: 57
在C语言中,可以使用`malloc`函数动态分配内存来建立一个二维数组。这通常涉及到两步:首先为行指针分配内存,然后为每行的列分配内存。下面是一个示例代码,展示如何使用`malloc`建立一个二维数组并为其赋予初始值:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int rows = 3; // 行数
int cols = 4; // 列数
int **arr;
int i, j;
// 分配行指针的内存
arr = (int **)malloc(rows * sizeof(int *));
if (arr == NULL) {
// 处理分配失败的情况
return 1;
}
// 为每一行分配列的内存
for (i = 0; i < rows; i++) {
arr[i] = (int *)malloc(cols * sizeof(int));
if (arr[i] == NULL) {
// 处理分配失败的情况
for (j = 0; j < i; j++) {
free(arr[j]); // 释放已经分配的内存
}
free(arr); // 释放行指针的内存
return 1;
}
}
// 为二维数组赋值
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
arr[i][j] = i * cols + j; // 示例赋值
}
}
// 打印二维数组的值
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
// 释放分配的内存
for (i = 0; i < rows; i++) {
free(arr[i]);
}
free(arr);
return 0;
}
```
在这个示例中,我们首先为一个指向整数指针的指针`arr`分配了内存,然后为每一行分配了足够存储`cols`个整数的内存。之后,我们通过嵌套循环为每个元素赋值。最后,我们释放了为每一行和行指针分配的内存。
阅读全文