如何在 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:
");
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
printf("%d ", *(arr + i*col + j));
}
printf("
");
}
free(arr);
return 0;
}
上述程序的输出如下。
The matrix elements are: 0 1 2 1 2 3
现在让我们了解一下上面的程序。
使用 malloc 动态分配 2-D 数组 arr。然后使用嵌套 for 循环和指针算法初始化 2-D 数组。显示此内容的代码片段如下。
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;
然后显示 2-D 数组的值。最后,使用 free 释放动态分配的内存。显示此内容的代码片段如下。
printf("The matrix elements are:
");
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
printf("%d ", *(arr + i*col + j));
}
printf("
");
}
free(arr);
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP