在C语言中,可以使用函数指针和结构体来实现一个函数用指针多态指向三个函数。以下是一个示例:
#include <stdio.h>
// 定义三个不同的函数
void func1() {
printf("这是函数1
");
}
void func2() {
printf("这是函数2
");
}
void func3() {
printf("这是函数3
");
}
// 定义一个结构体,包含一个函数指针成员
typedef struct {
void (*func)();
} Polymorphism;
// 实现一个函数,根据传入的整数参数选择调用对应的函数
void call_func(Polymorphism *p, int index) {
p->func();
}
int main() {
// 创建一个Polymorphism类型的变量,并将函数指针初始化为nullptr
Polymorphism p = {NULL};
// 根据索引值设置函数指针,实现多态性
p.func = &func1; // 或者 p.func = &func2; 或者 p.func = &func3;
// 调用函数,实现多态性选择调用对应的函数
call_func(&p, 0); // 将输出 "这是函数1"
p.func = &func2; // 或者 p.func = &func3;
call_func(&p, 1); // 将输出 "这是函数2"
p.func = &func3; // 或者 p.func = &func1; 或者 p.func = &func2;
call_func(&p, 2); // 将输出 "这是函数3"
return 0;
}