c ++ void函数作为其他函数的参数

时间:2021-05-08 13:14:13

标签: c++ function arguments void

我不明白为什么这段使用 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;
}

1 个答案:

答案 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;
}