有以下程序 #include <stdio.h> int add( int a,int b){ return (a+b); } main() { int k, (*f)(), a=5,b=10; f=ad

admin2021-04-28  17

问题 有以下程序
    #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、k=(*f)(a,b);
D、k= *f(a,b);

答案D

解析 *与()的优先级,()的优先级高于*,因为(*f)()是在定义函数指针。f指向函数的指针。f=add,将函数add()的首地址赋给指针f,所以调用函数add()可以写为f(),其返回值是整型,不是指针类型,不能用*取指针指向的内存单元的数据,故k=*f(a,b)的调用方式错误。答案为D选项
转载请注明原文地址:https://kaotiyun.com/show/6Dtp777K
0

最新回复(0)