用malloc建立二维数组并赋值
时间: 2024-09-07 12:06:42 浏览: 54
在C语言中,使用malloc函数来动态分配内存是一种常见的做法,特别是当我们需要建立一个二维数组时。动态分配的二维数组实际上是在堆区创建了一个连续的内存块,并通过指针进行访问。下面是如何使用malloc函数来建立一个二维数组并赋值的步骤:
1. 首先,你需要决定数组的行数和列数。假设我们想创建一个m行n列的数组。
2. 然后,你需要为行指针分配内存,每个元素都是一个指向int类型的指针。
3. 接下来,为每一行分配内存,每个元素都是一个int类型的数组。
4. 最后,通过双重指针(指向行指针的指针)来访问和赋值数组中的每个元素。
具体代码示例如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int m = 3; // 行数
int n = 4; // 列数
// 为行指针分配内存
int **arr = (int **)malloc(m * sizeof(int *));
if (arr == NULL) {
fprintf(stderr, "内存分配失败");
return 1;
}
// 为每一行分配内存
for (int i = 0; i < m; i++) {
arr[i] = (int *)malloc(n * sizeof(int));
if (arr[i] == NULL) {
fprintf(stderr, "内存分配失败");
return 1;
}
}
// 为数组元素赋值
int value = 1;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
arr[i][j] = value++;
}
}
// 打印数组元素,检查赋值是否成功
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
// 释放内存
for (int i = 0; i < m; i++) {
free(arr[i]);
}
free(arr);
return 0;
}
```
注意:在使用完动态分配的内存后,应该逐行释放内存,并最终释放行指针本身所占用的内存。
阅读全文