用C语言设计初始化,加法,减法等函数
时间: 2024-09-23 18:04:33 浏览: 39
在C语言中,为了设计可以处理不同类型数据的初始化、加法和减法操作,我们通常会创建通用的函数,并通过指针或函数参数的类型推断机制来实现多态。这里是一个简单的示例:
```c
#include <stdio.h>
// 定义一个计算通用数值的结构体
typedef struct {
void (*init)(void*); // 初始化函数
int (*add)(int, int); // 加法函数
int (*subtract)(int, int); // 减法函数
} Calculator;
// 定义默认的行为:整数类型的加减运算
void init_int(void* ptr) {
int *i = (int*)ptr;
*i = 0; // 初始化为0
}
int add_int(int a, int b) {
return a + b;
}
int subtract_int(int a, int b) {
return a - b;
}
// 结构体实例化并设置特定操作
Calculator integer_calculator = { .init = init_int, .add = add_int, .subtract = subtract_int };
// 动态分配内存和调用初始化
void* alloc_and_init(int size) {
void* memory = malloc(size);
((Calculator*)memory)->init(memory); // 调用相应类型的操作
return memory;
}
// 使用动态分配的内存执行加法和减法
int perform_operation(void* ptr, int operation, int arg) {
Calculator* calc = (Calculator*)ptr;
if (operation == ADDITION) {
return calc->add(arg, *((int*)ptr)); // 假设ADDITION常量表示加法
} else if (operation == SUBTRACTION) {
return calc->subtract(arg, *((int*)ptr));
}
return 0; // 未知操作,返回0
}
int main() {
int* num1 = alloc_and_init(sizeof(int));
printf("Initialized number: %d\n", *(int*)num1);
int result = perform_operation(num1, ADDITION, 5);
printf("Addition: %d\n", result);
result = perform_operation(num1, SUBTRACTION, 2);
printf("Subtraction: %d\n", result);
free(num1); // 释放内存
return 0;
}
阅读全文