溫馨提示×

c語言動態(tài)創(chuàng)建結(jié)構(gòu)體的方法是什么

小億
141
2023-11-23 18:03:06
欄目: 編程語言

在C語言中,可以使用動態(tài)內(nèi)存分配函數(shù)malloc()來動態(tài)創(chuàng)建結(jié)構(gòu)體。以下是一個示例代碼:

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

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

int main() {
    int n;
    printf("請輸入結(jié)構(gòu)體的個數(shù):");
    scanf("%d", &n);
    
    Person* people = (Person*)malloc(n * sizeof(Person));
    if (people == NULL) {
        printf("內(nèi)存分配失敗\n");
        return 0;
    }
    
    for (int i = 0; i < n; i++) {
        printf("請輸入第%d個結(jié)構(gòu)體的id和name:", i+1);
        scanf("%d %s", &(people[i].id), people[i].name);
    }
    
    printf("輸入的結(jié)構(gòu)體信息為:\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()函數(shù)動態(tài)分配了n個Person大小的內(nèi)存空間,并將返回的指針賦值給people指針。然后遍歷people數(shù)組,依次輸入每個結(jié)構(gòu)體的成員變量值。最后輸出輸入的結(jié)構(gòu)體信息,并通過free()函數(shù)釋放動態(tài)分配的內(nèi)存空間。

0