温馨提示×

C语言怎么动态分配结构体数组

小亿
85
2024-05-30 15:25:13
栏目: 编程语言

动态分配结构体数组的方法与动态分配普通数组类似,只需要在分配内存时考虑结构体的大小即可。以下是一个简单的示例代码:

#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()函数动态分配了一个包含nStudent结构体的数组。然后使用循环初始化了每个结构体的值,并最后打印出了每个结构体的值。最后使用free()函数释放了动态分配的内存。

0