動態分配結構體數組的方法與動態分配普通數組類似,只需要在分配內存時考慮結構體的大小即可。以下是一個簡單的示例代碼:
#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()
函數釋放了動態分配的內存。