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);
结构体作为函数的参数分为两种:结构体和结构体数组。
不管是那种作为函数的参数,本质上参与函数运算的都是结构体变量或结构体变量数组内的成员变量。
结构体更易于操作是因为结构体变量之间可以直接赋值。
如:声明一个老师类型的结构体,并定义和初始化
声明老师结构体类型,并用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);
相关文章推荐
- C语言基础知识之(十一):结构体的内存
- 在C语言编程中设置和获取代码组数的方法
- Item 18:让接口容易被正确使用,不易被误用 Effective C++笔记
- Binary Tree Paths
- C语言编程中从密码文件获取数据的函数总结
- C语言基础知识之(十):结构体
- 第二章:C++简单程序设计
- c语言函数参数入栈顺序
- c语言结构体中动态数组的使用
- 值得学习的C语言开源项目
- C++ STL--stack/queue 的使用方法
- C++ 内存的字节对齐
- 作业《IOS_C语言》一维数组、数组排序、字符数组
- 【C++】修改const变量的值
- 在C语言中对utmp文件进行查找和写入操作的函数小结
- C++11特有的数值、数组初始化方法、常量的符号名称 const和浮点数、bool、自动推断类型auto
- C++程序的运行顺序
- 重载引用参数(c++ primer plus -6th)
- 1050 -- C语言合法标识符
- c++ 同步阻塞队列