为什么有两种方法可以通过指针调用函数?

时间:2016-09-21 10:29:46

标签: 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&amp; R以来的书籍?编译器是VS2010,上面的代码既可以使用星号,也可以不使用。

1 个答案:

答案 0 :(得分:1)

不,取消引用是没有必要的。函数指针可以像函数一样调用。即使p(5, 4.3f)也是可以接受的。