在堆空间使用结构体

我的代码:

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

struct stu
{
    char *name;
    float *scores;
};
int main()
{
    stu *p = (stu *)malloc(sizeof(stu)* 3);
    for (int i = 0; i < 3; i++)
    {
        // 重点
        p[i].name = (char *)malloc(sizeof(char) * 21);
        p[i].scores = (float *)malloc(sizeof(float)* 3);
        scanf("%s%f%f%f", p[i].name, &p[i].scores[0], &p[i].scores[1], &p[i].scores[2]); 
    }
    for (int i = 0; i < 3; i++)
    {
        printf("姓名:%s    语文:%f      数学:%f     英语:%f\n", p[i].name, p[i].scores[0], p[i].scores[1], p[i].scores[2]);
    }
    // 释放空间
    for (int i = 0; i < 3; i++)
    {
        // 重点
        free(p[i].name);
        free(p[i].scores);
    }
    free(p);
    system("pause");
    return 0;
}
最后修改:2019 年 04 月 21 日 07 : 13 PM

发表评论