首页 > 试题广场 >

设有以下函数int f(int a, char * b) {

[不定项选择题]
设有以下函数
int f(int a, char * b) {„„}
则下面对函数指针的定义和赋值错误的是( )
  • int (*p)(int, char*); p=f;
  • int *p(); p=f;
  • int (*)p(); p=&f;
  • int *p(int, char);p=&f;
测试了,int (*p)(int, char *);
p = f; 和 p = &f; 都可以

发表于 2017-03-20 22:18:58 回复(0)
正确答案:BCD   
我的选项:A
发表于 2022-04-23 16:22:50 回复(4)
函数指针的定义格式为函数类型(*指针变量名)(形参列表)
发表于 2017-03-09 20:31:21 回复(0)
函数是有地址的,但是写不写&都可以,同样,调用的时候写不写*都可以(这是由于兼容性等历史原因,有人称之为矛盾的和谐)
发表于 2021-02-26 14:50:36 回复(0)
函数指针的定义,那首先要是个指针,由于后面的()的优先级比*高,所以p首先要和 * 结合,就是(*p),这样才是一个指针,故排除B和D项;
赋值是把函数f(int a, char * b) {„„}的地址赋给指针变量p,函数名就是该函数的地址,故为p = f。只有A正确
发表于 2022-04-04 10:19:07 回复(0)
A.int (*p)(int, char*); p=f; 表示p是一个指针,指向一个函数,这个函数接收一个int和一个char*类型的参数,并且返回值是int型,正好f就是这样的一个函数。并且函数f和&f值是一样的,所以这里p=f等价于p=&f,p指向f。
B.int *p(); p=f;表示p是一个函数,这个函数不接受参数,返回值是一个int *类型,和f函数不符。
C.int (*)p(); p=&f;语法错误(*)无效
D.int *p(int, char);p=&f;表示p是一个函数,这个函数接收一个int和一个char*类型的参数,并且返回值是int *型指针,和f表示的函数返回值不同,并且这里p表示的是个函数,函数名是常量而不是指针,不能用来被赋值。
发表于 2024-04-29 16:55:00 回复(0)
函数指针得赋值: p=f; p=&f; 以上这两种赋值是一样的,都是指向首地址。
编辑于 2021-05-16 06:55:16 回复(0)
A是函数指针,本质是指针,指向一个函数。 B,D是指针函数,本质是函数,反回值为一个指针。 C的写法好像是错了,编译都不通过。
发表于 2021-12-31 11:17:25 回复(1)
没看到让选错误的,醉了🥴
编辑于 2024-04-14 10:43:52 回复(0)
D定义的不是一个函数指针
发表于 2022-01-01 20:50:39 回复(0)
2、3、4返回值类型对不上
发表于 2020-10-02 12:50:17 回复(0)
应定义一个指针函数*p,然后p=f
发表于 2017-02-23 09:12:31 回复(0)