int fun (int *c) { … } int main(){ int (*a)(int*)=fun,*b(),w[10],c; … }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | # include <stdio.h> int Max(int, int); //函数声明 int main(void) { int(*p)(int, int); //定义一个函数指针 int a, b, c; p = Max; //把函数Max赋给指针变量p, 使p指向Max函数 printf("please enter a and b:"); scanf("%d%d", &a, &b); c = (*p)(a, b); //通过函数指针调用Max函数 printf("a = %d\nb = %d\nmax = %d\n", a, b, c); return 0; } int Max(int x, int y) //定义Max函数 { int z; if (x > y) { z = x; } else { z = y; } return z; } |
1 2 3 4 5 | 输出结果是: please enter a and b:3 4 a = 3 b = 4 max = 4 |
【解释】在答案A中,a(w)调用正确,但将其返回值赋值给a是错误的,因为返回值
是整型数,而a是一函数指针,所以答案A是错误的。在答案C中,因b是一个返回值为
整型数指针的函数,*b(w)本身就是错误的;在答案D中,b后面省掉了括号,因为b是函
数,故也是错误的;而对于答案B来说,因为a指向了函数fun,所以它等价于fun(&c)的
调用,是正确的。所以正确答案是B。