写了一个小程序,但会发生内存问题,看了好久,实在是找不出问题。。。
程序代码:#include <stdio.h>
#include <malloc.h>
struct Student
{
int age;
char name[70];
float score;
};
void inputif(struct Student *pArr);
void sort(struct Student *pArr,int len);
void outputif(struct Student *pArr);
int main(void)
{
struct Student student;
inputif(&student);
sort(&student,4);
outputif(&student);
getchar();
return 0;
}
void inputif(struct Student *pArr)
{
int i;
pArr=(struct Student *)malloc(4*sizeof(struct Student)); //只需要类型所占的空间。
printf("请输入学生的信息:\n");
for(i=0;i<4;i++)
{
printf("请输入第%d个学生的信息:\n",i+1);
printf("age=");
scanf("%d",&pArr[i].age);
printf("name=");
scanf("%s",pArr[i].name); //pArr[i].name是数组名,即为一个地址,不用加&。
printf("score=");
scanf("%f",&pArr[i].score);
printf("\n\n");
fflush(stdin);
}
printf("\n\n");
}
void sort(struct Student *pArr,int len) //冒泡排序
{
struct Student t;
int i,j;
for(i=0;i<len-1;i++)
{
for(j=0;j<len-1-i;j++)
{
if(pArr[j].score>pArr[j+1].score)
{
t=pArr[j];
pArr[j]=pArr[j+1];
pArr[j+1]=t; //编译程序提示问题出现在这里,但是我看不出来啊
}
}
}
}
void outputif(struct Student *pArr)
{
int i;
printf("按成绩升序排序后的学生信息为:\n");
for(i=0;i<4;i++)
{
printf("第%d个学生的信息:\n",i+1);
printf("age=%d",pArr[i].age);
printf("name=%s",pArr[i].name);
printf("score=%f",pArr[i].score);
printf("\n\n");
}
}






