对上述问题给出完整的c语言代码
时间: 2024-12-20 09:15:41 浏览: 6
基于51单片机的智能窗户控制系统的C语言代码.zip
在C语言中,由于静态类型语言的特性,不像动态类型的语言如Java那样可以直接支持运行时的多态性。但是,我们可以通过函数指针或者结构体类型的动态链接来模拟某种程度的多态效果。
**1. 函数指针实现方法重载**
```c
#include <stdio.h>
typedef void printFunc(int); // 定义打印函数的原型
void printInt(int num) {
printf("Integer: %d\n", num);
}
void printFloat(float f) {
printf("Float: %.2f\n", f);
}
int main() {
printFunc* pf; // 函数指针声明
pf = printInt; // 动态绑定到printInt函数
pf(5);
pf = printFloat;
pf(3.14f);
return 0;
}
```
**2. 结构体类型实现方法重写**
```c
#include <stdio.h>
struct Animal {
void (*speak)(void);
};
void animalSpeak(struct Animal *a) {
a->speak(); // 调用指向的函数
}
void dogSpeak(void) {
printf("Dog barks.\n");
}
void catSpeak(void) {
printf("Cat meows.\n");
}
int main() {
struct Animal animalDog = { .speak = dogSpeak };
struct Animal animalCat = { .speak = catSpeak };
animalDog.speak(); // 输出 "Dog barks."
animalCat.speak(); // 输出 "Cat meows."
return 0;
}
```
阅读全文