C语言基础知识之(十二):结构体作为函数的参数(结构体变量、结构体数组)

结构体作为函数的参数

结构体作为函数的参数分为两种:结构体和结构体数组。

不管是那种作为函数的参数,本质上参与函数运算的都是结构体变量或结构体变量数组内的成员变量。

结构体更易于操作是因为结构体变量之间可以直接赋值。

如:声明一个老师类型的结构体,并定义和初始化

声明老师结构体类型,并用typedef重命名

struct teacher{

   char name[20];

   char sex;

   int age;

};

typedef struct teacher Teacher;

 

定义4个Teacher类型的变量t1、t2、t3、t4

Teacher t1 = {"zhangsan", 'm', 26};

Teacher t2 = {"lisi", 'f', 25};

Teacher t3 = {"wangwu", 'm', 29};

Teacher t4 = {"qianliu", 'f', 28};

 

定义的4个Teacher类型的变量t1、t2、t3、t4,可以组成结构体数组teacher[4]

Teacher teachers[4]= {t1, t2, t3, t4};

 

函数定义:

函数1:打印某个老师的信息

void printTeacher(Teacher t);

void printTeacher(Teacher t){

    printf("%s%c %d\n", t.name, t.sex, t.age);

}

 

函数2、比较两个老师的年龄,输出年龄最大的老师的全部信息

void printMaxAgeTeacher(Teacher t1, Teacher t2);

void printMaxAgeTeacher(Teacher t1, Teacher t2){

//找到年龄最大的老师,通过比较结构体内的age成员的大小,得到结构体的全部信息,结构体可以直接赋值

    Teacher t = t1.age> t2.age ? t1 : t2;

//    输出老师的信息

   printTeacher(t);

}

 

函数3、遍历teacher类型的数组,输出所有信息

void showAllTeacher(Teacher teachers[], int count);

void showAllTeacher(Teacher teachers[], int count){

    for (int i = 0;i < count; i++) { // 数组遍历使用for循环

       printTeacher(teachers[ i ] );

    }

}

 

函数4、将年龄升序排列 使用冒泡排序

void sortAscendByAge(Teacher teachers[], int count);

void sortAscendByAge(Teacher teachers[], int count){

    for (int i = 0;i < count-1; i++) {

        for (int j= 0; j < count-1-i; j++) {

            if(teachers[j].age > teachers[j+1].age) { // 比较数组元素中年龄的大小

               Teacher temp = teachers[j]; // 结构体直接进行赋值,得到结构体的全部信息

               teachers[j] = teachers[j+1];

               teachers[j+1] = temp;

            }

        }

    }

}

 

应用1、输出所有信息

   showAllTeacher(teachers, 4);

   

应用2、按年龄升序排列,并输出所有的信息

    sortAscendByAge(teachers,4);

   showAllTeacher(teachers, 4);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值