pal*_*n_t 4 c c++ function-pointers
假设我有一个函数指针,如:
void fun() { /* ... */ };
typedef void (* func_t)();
func_t fp = fun;
Run Code Online (Sandbox Code Playgroud)
然后我可以通过以下方式调用它:
fp();
Run Code Online (Sandbox Code Playgroud)
要么
(*fp)();
Run Code Online (Sandbox Code Playgroud)
有什么不同/
准确地说是两个括号和一个星号.
两者都调用指向的函数fun,并且两者都以相同的方式执行.
但是,在视觉上,(*fun)清楚地表明它fun本身不是一个函数,并且解除引用操作符是一个视觉提示,它是某种指针.
无括号语法fun()与常规函数调用相同,因此在视觉上等同于此,使得主要清楚你正在调用某种函数.它需要上下文或查找来注意它是一个函数指针.
就发生的情况而言,这只是一种风格差异.