以结构体指针作为函数的参数处理,结果程序出错!
//以结构体指针作为函数的参数处理#include<stdio.h>
struct Lesson
{
float math;
float art;
};
struct Student
{
char name[5];
struct Lesson grade;
};
int main()
{
void convert(struct Student *p,int k);
int i;
struct Student stu[5];
struct Student *p;
p=stu;
for(i=0;i<5;i++)
{
scanf("%f,%f,%s",&((*p).grade.art),&((*p).grade.math),&((*p).name)); //注意结构体数组指针的写法问题,因为涉及到符号优先级的问题!
p++;
}
puts("The Information data is: ");
p=stu;
for(i=0;i<5;i++)
{
printf("%s %.1f %.1f\n",(*p).name,(*p).grade.art,(*p).grade.math);
p++;
}
p=stu;
convert(p,5);
puts("The converted array is:");
for(i=0;i<5;i++)
{
printf("%s %.1f %.1f\n",(*p).name,(*p).grade.art,(*p).grade.math);
p++;
}
return 0;
}
void convert(struct Student *p,int k)
{
struct Student exo;
int i,j;
for(i=0;i<k-1;i++)
{
k=i;
for(j=1;j<k;j++)
{
if(*(p+j).grade.math<*(p+k).grade.math)
k=j;
}
if(k!=i)
{
exo=*(p+k);
*(p+k)=*(p+i);
*(p+i)=exo;
}
}
}
/*
报错信息提醒如下:请问如何修改
Compiling...
Cpp指针.cpp
D:\C语言设计\结构体进行的数组处理\Cpp指针.cpp(56) : error C2228: left of '.grade' must have class/struct/union type
D:\C语言设计\结构体进行的数组处理\Cpp指针.cpp(56) : error C2228: left of '.math' must have class/struct/union type
D:\C语言设计\结构体进行的数组处理\Cpp指针.cpp(56) : error C2228: left of '.grade' must have class/struct/union type
D:\C语言设计\结构体进行的数组处理\Cpp指针.cpp(56) : error C2228: left of '.math' must have class/struct/union type
*/