您的位置:首页 > 其它

结构体指针和数组

2015-04-05 09:44 274 查看
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就可以了。

综上所述:结构体名访问就用.的形式进行访问,而指针的话就用指针名->的形式进行访问。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  结构体 指针