怎么动态分配结构体数组
时间: 2023-11-11 12:18:44 浏览: 219
在C语言中,可以使用动态内存分配的方式来创建结构体数组。首先,需要使用malloc函数来为结构体数组分配内存空间。具体的步骤如下:
1. 包含头文件:需要包含< stdlib.h> 头文件以便使用malloc函数。
2. 定义结构体:定义一个包含所需成员的结构体。
3. 输入数组元素个数:从用户那里获取数组的元素个数。
4. 分配内存:使用malloc函数来为结构体数组分配内存空间,分配的内存大小为数组元素个数乘以结构体的大小。
5. 为数组元素赋值:使用循环语句,通过结构体指针访问每个数组元素,并为其赋值。
6. 输出数组元素:使用循环语句,通过结构体指针访问每个数组元素,并输出其内容。
7. 释放内存:在程序结束前,使用free函数释放所分配的内存空间。
下面是一个示例代码,展示了如何动态分配结构体数组:
```
#include <stdio.h>
#include <stdlib.h>
struct Matrix {
int serial;
int row;
int column;
};
int main() {
int len, i;
struct Matrix *pArr;
printf("请输入数组的元素个数:\n");
scanf("%d", &len);
pArr = (struct Matrix *)malloc(len * sizeof(struct Matrix)); //为结构体数组分配存储空间
printf("为数组赋值:\n");
for (i = 0; i < len; i++) {
pArr[i].serial = i + 1;
printf("第%d个元素:", pArr[i].serial);
scanf("%d %d", &pArr[i].row, &pArr[i].column);
}
printf("数组输出:\n");
for (i = 0; i < len; i++) {
printf("第%d个元素:%d %d\n", pArr[i].serial, pArr[i].row, pArr[i].column);
}
free(pArr); //释放内存空间
return 0;
}
```
在这个示例代码中,我们首先定义了一个包含serial、row和column成员的结构体Matrix。然后,通过输入获取需要创建的结构体数组的元素个数。接着,使用malloc函数为结构体数组pArr分配内存空间,分配的内存大小为元素个数乘以结构体的大小。然后,通过循环遍历结构体数组的每个元素,依次为其赋值。最后,再次通过循环遍历结构体数组的每个元素,输出其内容。在程序结束前,使用free函数释放所分配的内存空间。<span class="em">1</span><span class="em">2</span><span class="em">3</span>