函数涉及到
1、结构体的定义
2、结构体的赋初值
3、结构体的成员的调用方式
4、结构体做功能函数的参数
5、结构体做功能函数的类型
/*求n个学生中成绩最高的学生的信息并输出。*/
#include "stdio.h"
struct student //定义一个名student的结构体类型,一般定义在程序开头部分
{
int num;
char *name; //不能定义为char name;因为一般名字不止一个字符;
//这里还可以定义为char name[N],但这里的N必须和后面出现的最长名字的字符数相等,
//相对于指针变量而言,还是不方便
char sex;
float score;
}; //;不能缺少
struct student fun(struct student *pstud,int n)//结构体指针做函数参数,
//同时由于函数类型是struct,所以函数的返回值也是结构体
{
struct student *p,*p_max,*p_end;
//int j;
float max=0;
p=pstud;
p_max=p;
p_end=p+n;
for ( ;p<p_end;p++)
if (p->score>max) //通过指针p->score调用结构体中的成员
{
max=p->score;
p_max=p;
}
return (*p_max);
}
void main ()
{
int i,j;
struct student pp,stu[5]={ {101,"Zhao lei",'M',45}, //定义变量的同时,给结构体成员赋值
{102,"Sun hui",'M',62.5},
{103,"Li fang",'F',92.5},
{104,"Wang hua",'F',89.5}
};
//非法赋值语句——stu[4]={105,"zou fang",'f',100};
//正确的赋值方式——必须一个一个将其赋值给相应的成员,如下
stu[4].num=105;
stu[4].name="zou fang"; //定义结构体变量后,给结构体成员赋值
stu[4].sex='f';
stu[4].score=100;
pp=fun (stu,5); //调用函数与赋值
printf ("%d %5s %3c %5.1f\n",pp.num, pp.name,pp.sex,pp.score);
//pp.score——结构体成员的一般调用方式
}