动态申请二维结构体数组
时间: 2023-07-21 09:31:46 浏览: 72
可以使用指针和动态内存分配来申请二维结构体数组。以下是一个示例代码:
```
#include <stdio.h>
#include <stdlib.h>
struct MyStruct {
int a;
float b;
};
int main() {
int rows = 3;
int cols = 4;
// 动态分配一维指针数组
struct MyStruct **arr = (struct MyStruct **) malloc(rows * sizeof(struct MyStruct *));
// 动态分配每行的二维数组
for (int i = 0; i < rows; i++) {
arr[i] = (struct MyStruct *) malloc(cols * sizeof(struct MyStruct));
}
// 对数组进行操作
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
arr[i][j].a = i;
arr[i][j].b = j * 0.1;
}
}
// 输出数组
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("(%d, %.1f) ", arr[i][j].a, arr[i][j].b);
}
printf("\n");
}
// 释放内存
for (int i = 0; i < rows; i++) {
free(arr[i]);
}
free(arr);
return 0;
}
```
在这个示例中,我们首先动态分配一个指针数组,然后为每个指针分配一个二维数组。最后,我们使用双重循环操作数组,并在程序结束时释放内存以防止内存泄漏。
阅读全文