C言語で動的に構造体を作成する方法は何ですか?

C言語では、構造体を動的に作成するために、動的メモリ確保関数malloc()を使用できます。以下のコード例をご覧ください。

#include <stdio.h>
#include <stdlib.h>

typedef struct {
    int id;
    char name[20];
} Person;

int main() {
    int n;
    printf("请输入结构体的个数:");
    scanf("%d", &n);
    
    Person* people = (Person*)malloc(n * sizeof(Person));
    if (people == NULL) {
        printf("内存分配失败\n");
        return 0;
    }
    
    for (int i = 0; i < n; i++) {
        printf("请输入第%d个结构体的id和name:", i+1);
        scanf("%d %s", &(people[i].id), people[i].name);
    }
    
    printf("输入的结构体信息为:\n");
    for (int i = 0; i < n; i++) {
        printf("id: %d, name: %s\n", people[i].id, people[i].name);
    }
    
    free(people);
    return 0;
}

malloc()関数でPerson構造体の大きさをn個分動的に確保し、そのアドレスをpeopleポインタに格納しています。その後、people配列を順次処理して各構造体メンバに値を入力し、最後に構造体情報を表示してfree()関数で確保したメモリを解放しています。

bannerAds