计算机二级c语言问题求解 (*f)() 以及f=add;是什么意思?

#include <stdio.h>
int add(int a,int b)
{
return (a+b);
}
main ()
{
int k,(*f)(),a=5,b=10;
f=add;
...
}
则以下函数调用语句错误的是
A.k=f(a,b) B.k=add(a,b) C.(*f)(a,b) D.*f(a,b)

答案是A
int k,(*f)(),a=5,b=10;
这里f是一个函数指针,指向的函数的返回值为int型
f=add;这句话的意思是,将函数add的地址赋给指针f,
访问指针指向的内容是需要使用*,所以A是错的,B是直接使用函数名调用函数,C和D是通过指针访问指针指向的函数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-30
D 错误 应该加括号
(*f)() 是函数指针 跟变量指针一个道理
f=add; 就是把add的函数地址付给了f
可以用(*f)() 替代add()本回答被提问者采纳
第2个回答  2013-08-30
(*f)() 是函数指针,将该指针指向add函数,意思就是调用add函数。改了啊,仔细看了下是A错。