分析下列程序:
int f1(float); int f2(char); int f3(float); int f4(float); int (*pf) (float);
则以下不合法的是: C
A int (*p)(float) = &f1;
B pf = &f4;
C pf= &f2;
D pf = f3;
知识点:
函数指针变量:
函数指针变量的声明方法为:
返回值类型 ( * 指针变量名) ([形参列表]);
根据定义,
int(*pf)(float);
int (*p)(float)=&f1;
pf,p都是函数指针变量。
函数地址 C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。
函数地址的获取,可以是函数名,也可以在函数名前加取地址符& 。
C错误是因为函数行参类型不匹配。
函数指针所指向的函数,返回值类型,形参列表必须完全匹配,对函数指针赋值可以采用以下方式pf=&p1或者pf=p1