给定以下结构,我想知道带有我写的指针的相等表达式是否正确
struct data{
char fname[30];
char lname[30];
float grade;
int trials;
int year;
};
struct data base[N];
fgets(base[i].lname,30,stdin)
base[i].fname[length-1] == '\n'
scanf(" %f",&(base[i].grade));
if(base[i].grade<0 || base[i].grade>10)
带指针的相等表达式
struct data{
char *fname;
char *lname;
float grade;
int trials;
int year;
};
struct data *base=malloc(N*sizeof(struct data));
for(i=0;i<N;i++){
(base+i)->fname = malloc(30*sizeof(char));
(base+i)->lname = malloc(30*sizeof(char));
}
fgets((base+i)->lname,30,stdin)
(base+i)->(fname+length-1) == '\n'
scanf(" %f",&(base+i)->grade));
if((base+i)->grade<0 || (base+i)->grade>10)
最佳答案
base[i].fname[length-1]
等效于*(((base+i)->fname)+length-1)
另外,正如编译器会告诉您的那样,您不能将malloc放在初始化程序中-初始化程序必须是编译时间常数。
关于c - 结构数组与结构指针之间的表达式相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21215817/