溫馨提示×

C語言怎么動態(tài)分配結(jié)構(gòu)體數(shù)組

小億
122
2024-05-30 15:25:13
欄目: 編程語言

動態(tài)分配結(jié)構(gòu)體數(shù)組的方法與動態(tài)分配普通數(shù)組類似,只需要在分配內(nèi)存時考慮結(jié)構(gòu)體的大小即可。以下是一個簡單的示例代碼:

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

// 定義一個結(jié)構(gòu)體
typedef struct {
    int id;
    char name[20];
} Student;

int main() {
    int n;
    printf("請輸入學生人數(shù): ");
    scanf("%d", &n);

    // 動態(tài)分配結(jié)構(gòu)體數(shù)組
    Student *students = (Student*)malloc(n * sizeof(Student));

    // 初始化結(jié)構(gòu)體數(shù)組的值
    for (int i = 0; i < n; i++) {
        students[i].id = i + 1;
        sprintf(students[i].name, "Student%d", i + 1);
    }

    // 打印結(jié)構(gòu)體數(shù)組的值
    for (int i = 0; i < n; i++) {
        printf("學生%d的ID是%d,姓名是%s\n", i + 1, students[i].id, students[i].name);
    }

    // 釋放動態(tài)分配的內(nèi)存
    free(students);

    return 0;
}

在上面的示例代碼中,首先通過malloc()函數(shù)動態(tài)分配了一個包含nStudent結(jié)構(gòu)體的數(shù)組。然后使用循環(huán)初始化了每個結(jié)構(gòu)體的值,并最后打印出了每個結(jié)構(gòu)體的值。最后使用free()函數(shù)釋放了動態(tài)分配的內(nèi)存。

0