【发布时间】:2023-03-17 21:20:02
【问题描述】:
我有这两个测试功能:
int apply_a(int (*fun)(int, int), int m, int n) {
return (*fun)(m,n);
}
int apply_b(int (*fun)(int, int), int m, int n) {
return fun(m,n);
}
它们似乎返回不同的东西,那么为什么它们都产生相同的结果?
int add(int a, int b) {return a + b;}
int res_a = apply_a(add, 2, 3); // returns 5
int res_b = apply_b(add, 2, 3); // returns 5
我会假设其中一个会返回指针地址或指针本身;而不是存储在指针上的值...
那么为什么要这样做呢?
【问题讨论】:
-
因为任何一种语法(带或不带星号)对于通过指针调用函数都是有效的。第二种情况是调用(你可以通过括号和传递的参数来判断)。
-
两者都不好。你应该使用
(***fun)(m, n)来获得三星级程序员的资格。
标签: c++ c pointers return function-pointers