malloc 结构体数组
时间: 2023-08-24 08:13:15 浏览: 139
您可以使用malloc函数来分配一个结构体数组。首先,您需要定义一个结构体类型,然后使用malloc函数来为结构体数组分配内存空间。
以下是一个示例代码:
```c#include <stdio.h>
#include <stdlib.h>
typedef struct {
int id;
char name[20];
} Student;
int main() {
int num_students;
printf("请输入学生的数量:");
scanf("%d", &num_students);
// 使用malloc为结构体数组分配内存空间 Student *students = (Student*)malloc(num_students * sizeof(Student));
if (students == NULL) {
printf("内存分配失败\n");
return1;
}
// 输入学生信息 for (int i =0; i < num_students; i++) {
printf("请输入第%d个学生的ID:", i+1);
scanf("%d", &(students[i].id));
printf("请输入第%d个学生的姓名:", i+1);
scanf("%s", students[i].name);
}
// 打印学生信息 printf("\n学生信息:\n");
for (int i =0; i < num_students; i++) {
printf("学生%d:ID:%d,姓名:%s\n", i+1, students[i].id, students[i].name);
}
//释放内存 free(students);
return0;
}
```
在上述代码中,我们首先定义了一个名为Student的结构体类型,它包含一个整型成员id和一个字符数组成员name。然后,我们使用malloc函数为结构体数组分配了内存空间,分配的大小为num_students乘以结构体Student的大小。接下来,我们通过循环输入每个学生的id和姓名,并最后打印出学生信息。最后,使用free函数释放了之前分配的内存空间。
希望这个示例能对您有帮助!如果您还有其他问题,请随时提问。
阅读全文