#include "string.h"
#include "stdio.h"
#include "stdlib.h"
int add(int x, int y) {
int z;
z = x + y;
printf("func add():%d\n", z);
return z;
}
int subtracter(int x, int y) {
int z;
z = x - y;
printf("func subtracter():%d\n", z);
return z;
}
int multiplier(int x, int y) {
int z;
z = x * y;
printf("func multiplier():%d\n", z);
return z;
}
int test(int (*MyOperator)(int, int)) {
MyOperator(2, 1); // 类似java的回调函数
return 0;
}
// 分开放在不同的库文件中,解耦
// 多态的核心思想是兼容未来
// 函数指针做函数参数的核心思想
// 函数指针做函数参数的本质:
// 把函数入口地址传给被调用函数,
// 同时,函数类型(函数类型三要素:名称、参数、返回值)也是起到了做一个接口的约定。
// 声明一个回调函数类型
typedef int (*PtrCallbackFuncType)(int, int);
int test2(PtrCallbackFuncType ptrCallbackFuncType) {
ptrCallbackFuncType(2, 3); // 类似java的回调函数
return 0;
}
void main() {
// 定义一个函数指针变量
int (*pAddFuncVar)(int, int);
// 把add()函数的入口地址赋值给pAddFuncVar
pAddFuncVar = add;
test(pAddFuncVar);
pAddFuncVar = subtracter;
test(pAddFuncVar);
pAddFuncVar = multiplier;
test2(pAddFuncVar);
test2(add);
system("pause");
}
C++函数指针做函数参数
最新推荐文章于 2024-02-26 13:38:55 发布