c++ - 两种函数作为参数传递方式的区别

标签 c++ function function-pointers

这两种定义接受另一个函数的函数的方式似乎是相同的(例如,两个函数的函数体是相同的)。我通过摆弄找到了第一个,然后在几个网站上找到了第二个。

void foo(int bar())
void foo(int (*bar)())

正文示例:

{
    for (int i = 0; i < 10; i++)
      cout << bar() << ' ';
}

有什么区别?一个比另一个更受欢迎吗?它是依赖于编译器还是 C++ 版本?

最佳答案

根据 function parameters declaration rules,它们是相同的.

The type of each function parameter in the parameter list is determined according to the following rules:
...
3) If the type is a function type F, it is replaced by the type "pointer to F"
...

关于c++ - 两种函数作为参数传递方式的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58201394/

相关文章:

c++ - ReadFile FILE_FLAG_NO_BUFFERING 如何读取两个扇区之间的数据

c++ - 在 C++ 中的函数名前使用 '&' 运算符

c - 实现 qsort 的比较器。如何摆脱这个警告?

c - 为什么异常说明 "Run-Time Check Failure #2 - Stack around the variable ' f' 已损坏。”扔在这里?

c++ - TBB_tbb_LIBRARY_DEBUG-未找到

c++ - 包裹在共享指针中时的 vector 构造

C 在 void 函数之后由指针发送的数组的值被修改

list - 具有函数分支的 Haskell 树

c++ - 函数模板实例的地址可以作为函数指针传递给某个函数吗?

c++ - 为什么 g++ 会生成巨大的错误日志?