首页 > 试题广场 >

设有以下函数void fun(int n,char *s)(

[单选题]
设有以下函数void fun(int n,char *s)(......),则下面对函数指针的定义和赋值均是正确的是:()
  • void (*pf)(int,char);   pf=&fun;
  • void (*pf)(int n,char *s);   pf=fun;
  • void *pf();  *pf=fun;
  • void *pf();  pf=fun;
推荐
实测在定义函数指针时可以带形参,编译器不会报错。
函数指针的赋值直接引用函数名和在函数名上取地址符号是等价的。

选B
编辑于 2015-01-31 10:09:59 回复(0)
B. 函数指针只需要把fun 改成(*pf) ,赋值 直接 pf = fun;即可 函数名赋值.指针函数赋值时候,可以直接用函数名赋值(书上一般都是这样赋值的) .但是也可以用&fun ,取地址操作符复制给函数指针.   pf = &fun;也是可以的.亲测过

但是A答案,在char参数后面少了一个*,所以是错的.如果加上*.也是正确的
编辑于 2015-04-13 12:36:42 回复(5)
函数名即函数的起始地址,直接赋值即可。pf=&fun和pf=fun都是正确的。
但是函数指针,要求形参类型必须一致,A选项形参类型错误,如果改成void (*pf)(int,char*); pf=&fun;则A和B都正确。
所以选B。

发表于 2018-01-23 09:01:48 回复(0)
答案:B
函数指针需要区分重载的函数,因此必须带参数,只有B选择的参数与函数定义的参数相同。
发表于 2015-01-28 15:40:57 回复(0)
可以把函数的首地址赋予一个指针变量,使指针变量指向函数所在的内存区域,然后通过指针变量就可以找到并调用该函数。这种指针叫做函数指针。
发表于 2022-11-15 21:57:54 回复(0)
没看见函数后边的那个小括号应该改成大括号吗??牛客网的题怎么这么差劲了
编辑于 2019-07-22 20:48:24 回复(0)
函数指针的参数可以省略参数的变量名,但是不可以省略类型,所以A选项的*不能省略,
发表于 2024-01-22 19:32:16 回复(0)
实测在定义函数指针时可以带形参,编译器不会报错。
函数指针的赋值直接引用函数名和在函数名上取地址符号是等价的。
发表于 2022-06-06 21:48:19 回复(0)
函数指针(*)和函数返回指针是有区别的
发表于 2018-06-16 09:01:06 回复(0)
声明函数指针必须加括号,因为括号优先级高于*号。另外,函数名和数组名一样代表了函数代码的首地址,因此在赋值时,直接将函数指针指向函数名即可, fun代表首地址,所以不能加&。
发表于 2018-05-10 23:06:14 回复(0)
函数名也是指针
发表于 2018-04-10 08:25:28 回复(0)
同觉得是B~a少个*
发表于 2018-03-19 01:17:55 回复(0)
实测在定义函数指针时可以带形参,编译器不会报错。 函数指针的赋值直接引用函数名和在函数名上取地址符号是等价的。
发表于 2018-01-16 12:22:19 回复(0)
a中char 后面少了个*
发表于 2017-08-20 23:49:04 回复(0)
没仔细看到A选项的char 类型
发表于 2017-06-22 17:12:11 回复(0)
B
发表于 2015-05-04 17:49:16 回复(0)
答案 A B

C D  参数类型 个数 不符合 。
发表于 2015-01-14 13:29:30 回复(0)