好库网首页 | 我的好库
好库网 好库网社区
IT社区 » C/C++ » C语言论坛 » C语言用指针调用函数有不同语法形式?
回复 发帖

查看:1278    回复:1 C语言用指针调用函数有不同语法形式?
访问okcool的空间
发表于 2012/6/10 14:30:23
1楼

谢谢!

访问vchelp的空间
发表于 2012/6/10 14:30:47
2楼

最初,函数指针必须用*操作符(和一对括号)“转换为”一个“真正的”函数才能调用: 

int r, (*fp)(), func(); 

fp = func; 

r  = (*fp)();

最后一行的解释很明确:fp是一个函数的指针,因此*fp是个函数。在括号内加上函数参数列表(再在*fp外加上一对括号用于使运算的优先级正确),就完成了一个完整的函数调用。

而函数总是通过指针进行调用的,所有“真正的”函数名在表达式和初始化中,总是隐式地退化为指针。这个推论表明,无论fp是函数名还是函数的指针,r = fp();

都是合法的且能正确工作。(这种用法没有任何歧义,使用函数指针后跟参数列表的方法,除了调用它所指的函数之外,别的什么也做不了。)使用显式的*号依然允许,而且为了保证在较老的编译器上的可移植性,这也是推荐的用法。

您需要登录后才可以回帖 登录 | 注册
回复 发帖