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

admin2022-10-24  113

问题 有以下程序
 #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://jikaoti.com/ti/PId0FFFM
0

最新回复(0)