【发布时间】:2018-12-03 04:31:16
【问题描述】:
我的代码可以工作,但我还没有弄清楚 malloc 是如何将内存分配给指向 C 中结构的指针的。在我的代码中,我没有将结构的整个大小分配给我的指针,而只是分配大小它的成员,是好是坏?如果它不好,我应该如何优化我的代码。
这是我的代码:
struct Student
{
char name[25];
float math, physic;
char rank;
};
void studentManagement(void)
{
struct Student *s;
int n,i=1;
float ave;
printf("Number of student = ");
scanf("%d", &n);
getchar();
while(i<=n)
{
s = malloc(25*sizeof(char));
printf("Enter student name: ");
fgets(s->name,25,stdin);
free(s);
s = malloc(5*sizeof(float));
printf("Physics grade = ");
scanf("%f", &s->physic);
printf("Math grade = ");
scanf("%f", &s->math);
getchar();
ave = ((s->math )+ (s->physic)) / 2;
if(ave<5)
printf("Rank = D\n");
if(ave >= 5 && ave <= 7)
printf("Rank = C\n");
if(ave >= 7 && ave <= 8)
printf("Rank = B\n");
if(ave > 8)
printf("Rank = A\n");
free(s);
i++;
}
}
【问题讨论】: