C语言,有以下说明和定义,则对fun函数的正确调用语句是()

答案是什么???求详细解答 *b()也是一个函数, 所以这个 b=fun: *b(w); 对不对????
main() { int (*a)(int*), *b(), w[10],c;┆ } fun(int *c) {┅}(A)a=fun: a(w); (B) a=fun: (*a)(&c);〃 (C) b=fun: *b(w); (D) fun(b);

答案是B
其中的b是一个函数的声明,声明了一个返回值为int * 的函数b。所以b是不能作为指针使用的,因此C是错误的。追问

那A,B这两个选项怎么解释啊????

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-24
5 C语言,有以下说明和定义,则对fun函数的正确调用语句是(B)这个英语单词应该是在里面宣布,不知道这样可不可以帮到你,如果错了的话希望你谅解。
第2个回答  2019-12-06
对的,这是c语言的专业编程知识。
第3个回答  2014-01-13
你去相关论坛里问问去
第4个回答  推荐于2017-09-01
个人答案:A
首先看main函数中的定义,int (*a)(int*),这里定义了一个函数指针a,即返回值是int型,参数为int*这样一种函数类型的指针。你的fun函数应该返回的是int型,这样的话,我们来看下这几个答案:
(A) a既然是函数指针,那么要给它赋值才能使用,赋值的时候函数的类型一定要匹配,那么就要给a赋一个返回值为int型,参数为int*型的函数指针,fun 正是这样的函数,所以 a=fun没有问题。调用的时候,这个时候a和fun就是一样的了,调用的时候把fun换成a就行了,但是传给a的参数应该是int*型的,这里面的w是一个整型数组名,也代表了首元素的地址,即w=&w[0],是int*型,所以将w传给函数a没有问题。
(B) a=fun没有问题,参数传递也没有问题,只是调用的时候不用*a,直接a就行了。
(C) int *b(),这样看的话,b是一个返回值为int*,参数为空的函数,赋值的时候就不对了
(D) b既然是函数,怎么能传给fun的int*型参数呢本回答被提问者和网友采纳