typedef int (*OperationFunc)(int, int);//定义了一个函数指针类型OperationFunc,指向参数为(int, int) 返回值为int的函数。
int add(int a, int b) {
return a + b;
}
int perform(OperationFunc operation, int a, int b) {
return operation(a, b);
}
int main() {
OperationFunc func = add;//函数名本身已经代表一个函数的指针/地址,因此可以直接赋值
int result = perform(func, 5, 3); // Calls add(5, 3)
//也可以这样使用
result = perform(add, 5, 3); // Calls add(5, 3)
return 0;
}
方式2
typedef int (OperationFunc)(int, int);//定义了一个函数类型OperationFunc,代表参数为(int, int) 返回值为int的函数。
int add(int a, int b) {
return a + b;
}
int perform(OperationFunc* operation, int a, int b) {
return operation(a, b);
}
int main() {
OperationFunc func = &add;//OperationFunc是函数类型,因此add需要取地址才能赋值给它
int result = perform(func, 5, 3); // Calls add(5, 3)
//也可以这样使用
result = perform(&add, 5, 3); // Calls add(5, 3)
return 0;
}