#include <stdio.h> char (*pFun) (int); char glFun(int a) { return a; } int main(void) { pFun = glFun; // 1、printf("%c\n", pFun('a')); // 2、printf("%c\n", (*pFun)('a')); }
1、代码注释中的两种写法的区别在哪? 2、为什么运行结果是一样的? 3、如果没有区别,那种写法好一些(如果有区别请忽略)? 先谢过各位大神了!!!
有没有好心人给解解惑的,谢谢了<..>
1. 前者是隐式的,后者是显式,在C中都可以调用指向的函数;这个跟pFun = &glFun类似。
2. 因为调用了指向的函数地址,当然返回的结果是一样的。
3. 后者写法规范一些,让人和编译器立刻能知道这是一个函数指针变量在调用对应的函数功能。在C++中,基本类的非成员函数指针都需要后面这种写法。
fe非常感谢您的回答,让我有种豁然开朗的感觉(0.0)