阅读量:0
动态分配结构体数组的方法与动态分配普通数组类似,只需要在分配内存时考虑结构体的大小即可。以下是一个简单的示例代码:
#include <stdio.h> #include <stdlib.h> // 定义一个结构体 typedef struct { int id; char name[20]; } Student; int main() { int n; printf("请输入学生人数: "); scanf("%d", &n); // 动态分配结构体数组 Student *students = (Student*)malloc(n * sizeof(Student)); // 初始化结构体数组的值 for (int i = 0; i < n; i++) { students[i].id = i + 1; sprintf(students[i].name, "Student%d", i + 1); } // 打印结构体数组的值 for (int i = 0; i < n; i++) { printf("学生%d的ID是%d,姓名是%s\n", i + 1, students[i].id, students[i].name); } // 释放动态分配的内存 free(students); return 0; }
在上面的示例代码中,首先通过malloc()
函数动态分配了一个包含n
个Student
结构体的数组。然后使用循环初始化了每个结构体的值,并最后打印出了每个结构体的值。最后使用free()
函数释放了动态分配的内存。