C++ 如何运行在C+;中有指针的函数+;?

C++ 如何运行在C+;中有指针的函数+;?,c++,c,C++,C,假设我有一个指向名为foo的函数的指针。现在如何运行此函数?与运行任何其他函数的方式相同: foo(); 如果您的函数具有以下签名: void foo(int x); 您已经定义了以下指针: void (*ptr)(int) = foo; 您可以通过“ptr”执行foo,如下所示: ptr(12); //actually calls foo(12); 假设函数指针是fp void (*fp)(int); 从函数指针调用函数有两种方法: fp(3); 或 这两种方法是等效的,但都有各自

假设我有一个指向名为
foo
的函数的指针。现在如何运行此函数?

与运行任何其他函数的方式相同:

foo();

如果您的函数具有以下签名:

void foo(int x);
您已经定义了以下指针:

void (*ptr)(int) = foo;
您可以通过“ptr”执行foo,如下所示:

ptr(12); //actually calls foo(12);

假设函数指针是
fp

void (*fp)(int);
从函数指针调用函数有两种方法:

fp(3);


这两种方法是等效的,但都有各自的优点。在第二种形式中,它向读者明确表示程序中没有名为
fp
的函数,但
fp
是一个函数指针

根据“声明遵循使用”规则,您也可以像
(*ptr)(12)
一样调用它。函数指针的特殊之处在于,访问指向的值不需要取消对指针的引用。函数的特殊之处在于它们可以被取消引用并产生相同的值:
(****ptr)(12)
(*fp)(3);