请用C语言分别举例说明
时间: 2024-10-10 20:04:21 浏览: 29
MATLAB编程和C语言差异举例,举例说明,有示例代码参考
在C语言中,虽然不像面向对象的语言那样直接支持多态的概念,但是通过函数指针、结构体和动态内存分配可以模拟一些类似的效果:
1. 函数指针多态:通过定义指向函数的指针变量,可以在运行时根据不同情况调用不同的函数实现。例如,
```c
void (*func)(int); // 定义函数指针类型
void print(int x) {
printf("x is %d\n", x);
}
void printString(char* str) {
printf("The string is: %s\n", str);
}
func = print; // 将print函数赋值给func指针
func(5); // 输出 "x is 5"
func = printString;
func("Hello"); // 输出 "The string is: Hello"
```
这里,`func`指针可以根据需要改变指向的函数。
2. 结构体多态(静态多态):通过共用类型的结构体成员,可以实现不同类型的数据处理。例如,
```c
typedef struct {
void (*process)(void*);
} Processor;
void process_int(int value) {
printf("Processing int: %d\n", value);
}
void process_string(char* str) {
printf("Processing string: %s\n", str);
}
Processor processor;
processor.process = process_int; // 设置处理整数的函数
processor.process(10); // 输出 "Processing int: 10"
processor.process = process_string;
processor.process("Hello"); // 输出 "Processing string: Hello"
```
阅读全文