c++动态生成结构体数组
时间: 2023-11-03 10:22:07 浏览: 119
您可以使用动态内存分配来动态生成结构体数组。以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int id;
char name[20];
} Student;
int main() {
int size;
printf("请输入学生人数:");
scanf("%d", &size);
// 动态分配内存
Student* students = (Student*)malloc(size * sizeof(Student));
if (students == NULL) {
printf("内存分配失败\n");
return 1;
}
// 输入学生信息
for (int i = 0; i < size; i++) {
printf("请输入第%d个学生的ID:", i + 1);
scanf("%d", &(students[i].id));
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", students[i].name);
}
// 打印学生信息
for (int i = 0; i < size; i++) {
printf("学生ID:%d,姓名:%s\n", students[i].id, students[i].name);
}
// 释放内存
free(students);
return 0;
}
```
在这个示例中,我们首先从用户输入中获取学生的数量。然后,我们使用`malloc`函数动态地分配了一个包含了`size`个`Student`结构体的内存块。接下来,我们使用循环遍历数组,逐个输入学生的ID和姓名。最后,我们再次使用循环遍历数组,打印出学生的信息。最后,记得使用`free`函数释放动态分配的内存。
希望这个示例能帮助到您!如果还有其他问题,请随时提问。
阅读全文