c++ - fun(...) 和 (*fun)(...) 在 C/C++ 中使用函数指针有什么区别

标签 c++ c function-pointers

<分区>

Possible Duplicate:
How come pointer to a function be called without dereferencing?
How does dereferencing of a function pointer happen?

假设我有一个像这样的函数指针:

void fun() { /* ... */ };
typedef void (* func_t)();
func_t fp = fun;

然后我可以通过以下方式调用它:

fp();

(*fp)();

有什么区别/

最佳答案

恰好是两个括号和一个星号。

两者都调用了 fun 指向的函数,并且都以相同的方式调用。

但是,从视觉上看,(*fun) 清楚地表明 fun 本身并不是一个函数,解引用运算符是一个视觉提示,表明它是某种指针。

不带括号的语法 fun() 与常规函数调用相同,因此在视觉上等同于此,主要清楚您正在调用某种函数。它需要上下文或查找才能注意到它是一个函数指针。

就发生的情况而言,这只是风格差异。

关于c++ - fun(...) 和 (*fun)(...) 在 C/C++ 中使用函数指针有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8004112/

相关文章:

c++ - 将 C++ 实例方法分配给全局函数指针?

C++ - 通过多线程同时播放多个蜂鸣声?

c++ - 在 C++ 中读取输入并分配给不同的变量

c - 使用 GNU MCU Eclipse 插件的 Eclipse 中的 arm-none-eabi 链接器问题

C 拼写检查、字符串概念、算法

c - 函数指针类型

c++ - 尽管设置了 EOF 标志,为什么 std::ws 会阻塞?

c++ - C++如果在if为真后运行,为什么要这样做

c - 如何使用 fork 将多条记录从 parent 传递给 child

windows - 为什么不调用窗口过程而不是调用 CallWindowProc?