如何在C中动态分配2D数组?
可以使用单个指针在C中动态分配2D数组。这意味着使用malloc分配了大小为row*column*dataTypeSize的存储块,并且可以使用指针算法来访问矩阵元素。
演示该程序的程序如下。
示例
#include <stdio.h>
#include <stdlib.h>
int main() {
int row = 2, col = 3;
int *arr = (int *)malloc(row * col * sizeof(int));
int i, j;
for (i = 0; i < row; i++)
for (j = 0; j < col; j++)
*(arr + i*col + j) = i + j;
printf("The matrix elements are:\n");
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
printf("%d ", *(arr + i*col + j));
}
printf("\n");
}
free(arr);
return 0;
}上面程序的输出如下。
The matrix elements are: 0 1 2 1 2 3
现在让我们了解上面的程序。
二维数组arr使用malloc动态分配。然后,使用嵌套的for循环和指针算法初始化二维数组。显示此代码段如下。
int row = 2, col = 3;
int *arr = (int *)malloc(row * col * sizeof(int));
int i, j;
for (i = 0; i < row; i++)
for (j = 0; j < col; j++)
*(arr + i*col + j) = i + j;然后显示二维数组的值。最后,使用free释放动态分配的内存。显示此代码段如下。
printf("The matrix elements are:\n");
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
printf("%d ", *(arr + i*col + j));
}
printf("\n");
}
free(arr);热门推荐
1 如何训练狗狗不叫
2 训练狗狗不叫
3 训练狗狗随行
4 怎么训练狗狗不叫
7 训练比熊狗狗教程
10 上海狗狗训练
11 怎么训练狗狗上厕所
12 训练狗狗趴下
13 狗狗服从训练
14 训练狗狗拒食
15 训练狗狗笑
16 训练狗狗大便
17 训练狗狗立
18 训练狗狗捡东西