C语言程序设计(40)

来源:百度知道 编辑:UC知道 时间:2024/05/18 17:05:54
有以下程序
int add (int a,int b) {return (a+b); }
main()
{int k,(*f)(),a=5,b=10;
f=add;
...
}
则以下函数调用语句错误的是哪个?
k=(*f)(a,b);
k=add(a,b);
k=*f(a,b);
k=f(a,b);

why?
k=*f(a,b);
具体错在哪里?麻烦再讲下

这个k=f(a,b);
为什么是对的?还是没懂

k=*f(a,b); 错误的原因是函数调用格式错误
用函数指针变量调用函数的格式如下:
(*函数指针变量名) (实参表)

从题中看出:k=(*f)(a,b); 正确

k=*f(a,b); 格式错误
因为程序中add,f都是一个函数名
k=add(a,b);
k=f(a,b)
还是这句话:k=*f(a,b); 你要调用就好点调用,不调用就不要搞格式错误行不?

k=*f(a,b);

我认为答案是k=*f(a,b);
k=(*f)(a,b); 利用指针函数】

k=add(a,b); 普通调用

k=f(a,b); 将指针和一般函数结合起来的

寻地址的方式使用调用函数

我认为是k=f(a,b); 是错的f是指向函数的指针,调用是要家取内容符*