您的位置:首页 > 编程语言 > C语言/C++

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

2015-08-29 12:18 761 查看
结构体作为函数的参数

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

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

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

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

声明老师结构体类型,并用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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: