typedef struct{
int num1;
int num2;
int num3;
char name[10];
int all;
}Student;
Student *ptr=(Student *)malloc(sizeof(Student)*num);
for (i=0;i<num;i++)
{
scanf("%d %d %d %s",&(ptr+i)->num1,&(ptr+i)->num2,&(ptr+i)->num3,(ptr+i)->name);
(ptr+i)->all=(ptr+i)->num1*(ptr+i)->num2*(ptr+i)->num3;
aver+=(ptr+i)->all;
}
aver/=num;
for (i=0;i<num;i++)
{
if ((ptr+i)->all > aver) strcpy(result[0],(ptr+i)->name);
if ((ptr+i)->all < aver) strcpy(result[1],(ptr+i)->name);
}
很久没写了,一直出错。因为之前写成ptr[i]->num1之类的,后来查了资料才知道。
1.Student a;可以用a.num1来进行访问----就是结构体名. 的形式来进行访问。
2.对于指针ptr来说,只能用指针名->结构体变量名 来进行访问。所以上面的ptr[i]->num1出错,因为数组中ptr[i]==*(ptr+i),ptr[i]并不是一个指针了,改成(ptr+i)就可以了。
3.对于指针如果想用. 的形式进行访问时,需要符合1中的结构形式------ptr[i].num1就可以了。
综上所述:结构体名访问就用.的形式进行访问,而指针的话就用指针名->的形式进行访问。
317

被折叠的 条评论
为什么被折叠?



