c语言struct函数用法
C语言中的结构体是一种自定义数据类型,可以将不同的数据类型组合在一起,形成一个新的数据类型。在结构体中,可以定义成员变量和成员函数,成员变量可以是基本数据类型或其他结构体类型,成员函数可以对结构体进行操作。本文将介绍C语言中结构体函数的用法。
一、结构体函数的定义
结构体函数是一种与结构体相关联的函数,可以在结构体中定义,也可以在结构体外定义。在结构体中定义的函数称为成员函数,可以直接访问结构体的成员变量;在结构体外定义的函数称为非成员函数,需要通过参数传递结构体的指针来访问结构体的成员变量。结构体函数的定义格式如下:
1.成员函数的定义格式
struct 结构体名{
成员变量1;
成员变量2;
……
返回值类型 函数名(参数列表){
函数体
}
};
2.非成员函数的定义格式
返回值类型 函数名(struct 结构体名 *结构体指针, 参数列表){
函数体
}
二、结构体函数的调用
结构体函数的调用方式有两种:通过结构体变量调用成员函数,通过结构体指针调用非成员函数。
1.通过结构体变量调用成员函数
成员函数可以直接访问结构体的成员变量,因此可以通过结构体变量来调用成员函数。例如:
struct student{
char name[20];
int age;
float score;
void (*print)(struct student *); //成员函数指针
};
void print_info(struct student *stu){
printf('na%s, age:%d, score:%.2f
', stu->name, stu->age, stu->score);
}
void main(){
struct student stu = {'Tom', 18, 80.5, print_info};
stu.print(&stu); //通过结构体变量调用成员函数
}
2.通过结构体指针调用非成员函数
非成员函数需要通过参数传递结构体的指针来访问结构体的成员变量,因此需要通过结构体指针来调用非成员函数。例如:
struct student{
char name[20];
int age;
float score;
};
void print_info(struct student *stu){
printf('na%s, age:%d, score:%.2f
', stu->name, stu->age, stu->score);
}
void main(){
struct student stu = {'Tom', 18, 80.5};
print_info(&stu); //通过结构体指针调用非成员函数
}
三、结构体函数的应用
结构体函数的应用非常广泛,可以用来实现各种功能,例如:
1.结构体函数作为回调函数
可以将结构体函数作为参数传递给其他函数,用作回调函数,实现特定功能。例如:
struct student{
char name[20];
int age;
float score;
};
void sort(struct student *stu, int n, int (*cmp)(struct student, struct student)){
int i, j;
struct student temp;
for(i=0; i<n-1; i++){
c语言struct头文件 for(j=i+1; j<n; j++){
if(cmp(stu[i], stu[j]) > 0){
temp = stu[i];
stu[i] = stu[j];
stu[j] = temp;
}
}
}
}
int cmp_name(struct student s1, struct student s2){
return strcmp(s1.name, s2.name);
}
int cmp_age(struct student s1, struct student s2){
return s1.age - s2.age;
}
void main(){
struct student stu[] = {{'Tom', 18, 80.5}, {'Jack', 19, 85.5}, {'Mary', 17, 90.0}};
int n = sizeof(stu) / sizeof(struct student);
sort(stu, n, cmp_name); //按照姓名排序
for(int i=0; i<n; i++){
printf('na%s, age:%d, score:%.2f
', stu[i].name, stu[i].age, stu[i].score);
}
sort(stu, n, cmp_age); //按照年龄排序
for(int i=0; i<n; i++){
printf('na%s, age:%d, score:%.2f
', stu[i].name, stu[i].age, stu[i].score);
}
}
2.结构体函数作为成员函数
结构体函数可以作为成员函数,对结构体进行操作。例如:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论