#include<stdio.h>
#define N 3
//结构体的定义
typedef struct student
{
int id;
float sorce;
}STU;
//定义fun()函数
void fun(STU stu[],STU *s)
{
float min;
int i;
min=stu[0].sorce;
s=&stu[0];
for(i=1;i<N;i++)
{
if(min>stu[i].sorce)
{
min=stu[i].sorce;
s=&stu[i];
}
}
}
int main()
{
STU a[N]={{201901,80.5},{201902,98.2},{201903,84.3}};
STU *s;
fun(a,s);
printf("%d %f",s->id ,s->sorce) ;
return 0;
}
#include<stdio.h>
#define N 3
//结构体的定义
typedef struct student
{
int id;
float sorce;
}STU;
//定义fun()函数
STU * fun(STU stu[],STU *s)
{
float min;
int i;
min=stu[0].sorce;
s=&stu[0];
for(i=1;i<N;i++)
{
if(min>stu[i].sorce)
{
min=stu[i].sorce;
s=&stu[i];
}
}
return s;
}
int main()
{
STU a[N]={{201901,80.5},{201902,98.2},{201903,84.3}};
STU *s;
s=fun(a,s);
printf("%d %f",s->id ,s->sorce);
return 0;
}
这样子写就能正常输出,为什么啊?是不是fun()函数形参s不能传递到主函数的原因?
因为你的s指针本该代表a数组的首地址 但你忘了写 s是未初始化的指针 老师上课没说指针要初始化吗
#include<stdio.h>
#define N 3
//结构体的定义
typedef struct student
{
int id;
float sorce;
}STU;
//定义fun()函数
void fun(STU stu[], STU* s)
{
float min;
int i;
min = stu[0].sorce;
s = &stu[0];
for (i = 1;i < N;i++)
{
if (min > stu[i].sorce)
{
min = stu[i].sorce;
s = &stu[i];
}
}
}
int main()
{
STU a[N] = { {201901,80.5},{201902,98.2},{201903,84.3} };
STU* s=&a;
fun(a, s);
printf("%d %f", s->id,s->sorce);
return 0;
}