c++ - 为什么有两种通过指针调用函数的方式?

标签 c++ c function pointers visual-c++

<分区>

在我正在使用的项目中,我发现了一个复杂的宏,它正在创建指向从共享库加载的函数的指针映射。要将它用于另一个应该以相同方式加载的库,我必须检查它......并发现它包含据我所知不应该工作的行。为了把它归结为简单的代码,我扔掉了所有的语法糖,做了这样的例子:

#include <iostream>

using namespace std;

void func(int i, float f)
{
    cout << "Parameter is " << i << " and " << f  << endl;
}


typedef void (*FunctionFunc)(int i, float f);

int _tmain(int argc, _TCHAR* argv[])
{
    FunctionFunc p = &func;
    (p)(5,4.3f);
    return 0;
}

函数调用不应该看起来像 (*p)(5,4.3f) - 根据 K&R 之后的书吗?编译器是 VS2010,上面的代码在带星号和不带星号的情况下都有效。

最佳答案

不,不需要取消引用。指向函数的指针就像函数一样是可调用的。甚至 p(5, 4.3f) 也是可以接受的。

关于c++ - 为什么有两种通过指针调用函数的方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39614016/

相关文章:

c++ - 可以单独编译任何 .c 文件(也就是说,没有 main?)

javascript - 如何在 React Native 应用程序中预填充 TextInput?

c++ - 内联变量仿真 : can I use global static references to enforce the initialization order of static variable in functions?

c++ - 转置 16 字数组的最快方法

c - 从哪里获得最新的 ANSI C 标准文档

c - 在 C 语言中从文件中读取整数时遇到问题

c++ - 类型为 'int&' 的非常量引用的无效初始化,原因是什么?

c - 幂函数 K&R

c++ - 如何加速C++编译

c++ - 试图为从类继承的子类编写构造函数,猜测语法,预期主表达式错误?