C语言中结构体函数应用例子
时间: 2023-05-22 18:04:49 浏览: 76
当结构体成员函数被调用时,第一个参数为指向结构体的指针,函数名也需要以结构体名称开头。
下面是一个 C 语言中结构体函数的应用例子:
```
#include <stdio.h>
struct person{
char name[20];
int age;
int (*getAge)();
};
int get_age(struct person *p){
return p->age;
}
int main()
{
struct person p;
p.age = 18;
p.getAge = get_age;
printf("年龄:%d\n", p.getAge(&p));
return 0;
}
```
输出结果为:
```
年龄:18
```
相关问题
c语言结构体中的函数应用详解
在C语言中,结构体中可以定义函数指针作为成员,这种方式可以实现面向对象编程中的多态性。具体来说,结构体中的函数指针可以指向不同的函数,从而实现对不同类型数据的处理。下面是一个例子:
```c
#include <stdio.h>
// 定义一个结构体
struct operation {
char operator;
int (*func)(int, int); // 函数指针作为成员
};
// 定义两个函数
int add(int a, int b) {
return a + b;
}
int sub(int a, int b) {
return a - b;
}
int main() {
// 定义结构体数组
struct operation ops[2];
// 初始化结构体数组
ops[0].operator = '+';
ops[0].func = add;
ops[1].operator = '-';
ops[1].func = sub;
// 调用函数指针
int result1 = ops[0].func(1, 2); // result1 = 3
int result2 = ops[1].func(3, 2); // result2 = 1
printf("result1 = %d\n", result1);
printf("result2 = %d\n", result2);
return 0;
}
```
上述代码定义了一个结构体`operation`,其中包含一个字符类型的运算符和一个函数指针`func`。然后定义了两个函数`add`和`sub`,分别实现加法和减法。接着定义了一个结构体数组`ops`,并初始化了其中的两个元素,分别对应加法和减法。最后通过调用函数指针,实现了对不同类型数据的处理。
C语言结构体函数的格式
C语言中可以在结构体中定义函数,这种函数称为结构体函数。结构体函数的格式如下:
```
返回类型 结构体名_函数名(参数列表){
函数体;
}
```
其中,结构体名为结构体的名称,函数名为定义的函数名称,参数列表为函数参数的列表,可以为空。例如,定义一个结构体Person,其中包含一个结构体函数print,格式如下:
```
#include <stdio.h>
#include <string.h>
struct Person{
char name[20];
int age;
void (*print)(struct Person);
};
void printPerson(struct Person p){
printf("Name: %s\n", p.name);
printf("Age: %d\n", p.age);
}
int main(){
struct Person p;
strcpy(p.name, "Tom");
p.age = 20;
p.print = printPerson;
p.print(p);
return 0;
}
```
在上面的例子中,结构体Person中包含一个结构体函数print,在main函数中通过给print赋值的方式,将print函数赋值给结构体中的print函数指针,然后调用p.print(p)即可调用函数printPerson。