我不明白为什么这段使用 int 函数和参数的代码可以正常工作,但其他带有 void 函数和不带参数的代码却不能:
首先:
a
第二:
#include <iostream>
int Add(int x, int y)
{
return x+y;
}
int operation(int x, int y, int (*function)(int, int))
{
return function(x, y);
}
int main()
{
std::cout << operation(1, 4, &Add) << std::endl;
return 0;
}
答案 0 :(得分:1)
在您的第一个示例中,您不需要获取 Add() 的地址。按名称传递函数,不带参数,会自动取地址。
std::cout << operation(1, 4, Add) << std::endl;
在你的第二个例子中,你忘记了函数指针中的括号:
void b(void (*function)(/* these brackets were missing */))
{
传递给 b 时也不需要取 a 的地址,因为引用没有参数的函数会取其地址:
int main()
{
b(a);
return 0;
}