首页 > 试题广场 >

有声明 int fun6( int ); int (*

[不定项选择题]
有声明
int fun6(int); 
int (*pf)(int) = fun6;

在下列选项中,正确的调用是(  )。

  • int a=15; int n=fun6(&a);
  • int a = 15; cout<<(&pf)(a);
  • cout<<(pf)( 256 );
  • cout << pf( 256 );
在Dev-c++下加c++ 11编译选项,&a不被认为是int


在纯c环境下编译


发表于 2020-04-23 23:50:37 回复(0)
更多回答
防丢失
发表于 2018-06-03 15:19:44 回复(0)

pt(256);

(pt)(256);

(*pt)(256)

发表于 2019-03-07 21:06:43 回复(1)
根据C++ Primer第四版
238页 7.9.3 通过指针调用函数
示例:

cmpFcn pf = lengthCompare;
lengthCompare ("hi" , "bye");
pf("hi","bye");
(*pf)("hi","bye");

D选项显然是对的。
发表于 2018-05-15 17:09:34 回复(0)
使用函数指针时,指针可以像函数名一样,直接加括号和参数列表调用;也可先解引用再调用
pf();//or (*pf)() is also fine 

发表于 2019-06-26 10:11:17 回复(0)
函数指针 int (*pt)(int) 表示pt指向一个函数类型为int,拥有一个int型参数的函数 而int *pt(int)则表示pt为函数名,函数返回的是一个int*类型的指针,有一个int型的参数 函数指针的使用方式: (1)pt(int) (2)(*pt)(int) (3)(pt)(int)
编辑于 2021-02-27 08:44:28 回复(0)
A错误,应为:int n = fun6(a);
pf是一个函数指针,指向的函数需要一个int形参且返回值类型为int。
函数指针的使用方法:
1. 指针像函数名一样,直接加括号和参数列表调用:pf(256)或(pf)(256)   // C、D正确
2. 指针先解引用再调用:(*pf)(256)   // B选项错误,应为(*pf)(a)
发表于 2021-12-14 00:16:02 回复(0)
A、B答案明显错误。
C、D答案,在vs2015,正常运行。

发表于 2018-05-07 20:58:27 回复(0)

A 选项中:

									
cppCopy Code
int a = 15; int n = fun6(&a);

这个选项是错误的,因为fun6函数期望一个整数作为参数,而不是一个指向整数的指针。应该直接传递整数值给fun6,而不是传递指针。

B 选项中:

									
cppCopy Code
int a = 15; cout << (&pf)(a);

这个选项也是错误的,因为(&pf)表示取函数指针pf的地址,而不是调用函数。在这种情况下,我们应该使用(*pf)来间接调用指针所指向的函数。


编辑于 2023-11-13 15:52:38 回复(0)
函数指针两种使用方式 一 直接当做函数名使用,后接参数列表 二 先解引用再调用
发表于 2022-04-24 10:53:03 回复(0)
pf是函数指针,指向的是fun6这个函数,所以在调用的时候可以直接使用
发表于 2022-03-31 03:36:12 回复(0)
A C++里没有 取地址符 只有引用& 错 使用函数指针时,指针可以像函数名一样,直接加括号和参数列表调用;也可先解引用再调用 pf();//or (*pf)() is also fine
发表于 2021-10-26 13:35:48 回复(0)
看错了,我还以为是单选。以前用法都是按 D 的方式用的,没留意 C
发表于 2021-08-24 12:20:13 回复(0)
有谁能讲讲啊
发表于 2019-06-12 09:12:19 回复(0)
&amp;取地址操作(在赋值符号前面表引用)需要用指针调用
编辑于 2019-05-09 22:16:52 回复(0)
函数指针
发表于 2018-08-09 15:42:43 回复(0)