首页 > 试题广场 >

有如下一段程序: int f1(float);

[单选题]

有如下一段程序:

int f1(float);
int f2(char);
void f3(float);
int (*pf)(float);
以下语句合法的是()
  • int (*p)(float)=&f1;
  • pf=&f2;
  • pf=&f3;
  • pf=f3;
C。
函数指针变量:
函数指针变量的声明方法为:

返回值类型 ( * 指针变量名) ([形参列表]);
根据定义,

int(*pf)(float);
int (*p)(float)=&f1;
pf,p都是函数指针变量。

函数地址 :
在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。
函数地址的获取,可以是函数名,也可以在函数名前加取地址符& 。

C错误是因为函数形参类型不匹配。

 

函数指针所指向的函数,返回值类型,形参列表必须完全匹配,对函数指针赋值可以采用以下方式pf=&p1或者pf=p1 

发表于 2020-02-15 16:48:47 回复(0)
&是啥东西
发表于 2020-03-02 16:03:28 回复(1)
&的英文是ampersand;   在HTML中,& 相当于&;
int (*pf)(float);意思就是定义了一个函数指针(*和函数名先结合),形参是float型,返回值是int型;
对函数指针的初始化需要遵循一致性原则,结合选项来看,只有f1符合题意。
发表于 2020-02-19 17:58:54 回复(0)

int (*pf)(float )表示定义了一个返回值为int,参数为float型的函数指针,要想调用他就必须满足返回值和参数类型匹配。至于&f1;==&f1.

发表于 2019-11-28 16:52:21 回复(0)
参数与返回类型要一致性  
发表于 2019-02-23 09:54:02 回复(1)
A不算重复定义吗
发表于 2021-03-28 10:46:33 回复(1)
函数指针,指向的函数,必须 回值 参数列表 完全一致
发表于 2020-04-13 17:24:28 回复(0)
&my_function 是获取 my_function 函数的地址,而 my_function 本身就是一个函数的名称,它代表了该函数的地址。所以 &my_function 和 my_function 都代表了函数的地址,只是获取地址的方式不同。
发表于 2023-10-14 10:10:49 回复(0)
看到有人问&amp啥意思,刚巧我懂这么一妞妞,我就厚颜说下,&f等价于&。咳咳
发表于 2021-03-29 01:45:38 回复(0)
函数地址的获取,可以是函数名,也可以在函数名前加取地址符& 。
发表于 2021-03-22 11:35:25 回复(0)
这题是什么玩意儿?哪个A选项后面哪个f1是函数调用还是啥,定义吗?
发表于 2021-03-16 16:44:13 回复(0)
a和c有区别吗?
发表于 2023-02-17 17:47:00 回复(0)
可是程序已经定义了函数指针了,再定义就是重定义,要报错啊!
发表于 2022-08-10 23:20:21 回复(0)
这不ACD都对吗?
发表于 2022-07-01 16:25:39 回复(0)
函数指针
发表于 2022-04-06 00:17:11 回复(0)
蹲一个详解
发表于 2022-03-23 21:11:47 回复(0)
发表于 2022-03-04 10:33:42 回复(0)
能别写html代码嘛,人麻了
发表于 2021-10-09 16:30:34 回复(0)
总感觉A又重复定义一次了~
发表于 2021-05-31 17:50:32 回复(0)
这里不允许使用隐式类型转换
发表于 2021-03-08 20:02:09 回复(1)