在C数组中不可分配,但在第36行(我也注释过的行)中,我给数组分配了一个值,名称为,但没有得到任何错误。这是为什么发生?此外,除了这个莫名其妙的事情,如果您检查我的freeStudents功能是否正常工作,我将非常感激。谢谢你的时间家伙!在C数组中不可赋值,为什么这个程序工作?
#include <stdio.h>
#include <stdlib.h>
#define MAX_NAME 50
struct students
{
char name[MAX_NAME];
float average;
};
void storeStudents(struct students *lst, int n);
void printStudents(struct students *lst, int n);
void freeStudents(struct students *lst);
int main(void)
{
int n;
printf("How many students you wanna store? ");
scanf("%d", &n);
struct students *list;
list = (struct students *)malloc(n*sizeof(struct students));
storeStudents(list,n);
printStudents(list,n);
freeStudents(list);
return 0;
}
void storeStudents(struct students *lst, int n)
{
int i;
for(i=0;i<n;i++)
{
printf("Name of student: ");
scanf("%s", &(lst[i].name)); //In C arrays are not assignable, so why is this line working?
printf("Average of student: ");
scanf("%f", &(lst[i].average));
}
printf("\n");
}
void printStudents(struct students *lst, int n)
{
int i;
for(i=0;i<n;i++)
{
printf("Name: %s\tAverage: %.2f", lst[i].name, lst[i].average);
printf("\n");
}
}
void freeStudents(struct students *lst)
{
free(lst);
}
如果启用编译器警告,您将看到实际发生了什么:https://ideone.com/7JPJFH –
Oliver Charlesworth代码块编译器不会给我提供任何警告/错误.. –
这是什么意思?数组不可分配“?数组包含的内容显然是可变的,因此您可以为它的一个元素指定一个新值。你在哪里读过“数组不可分配”? –