有声明int fun4(int);int(*pf) (int)=fun4

2024-11-25 17:53:54
推荐回答(5个)
回答1:

答案是C
int fun4(int),是声明了一个函数,其参数是一个int变量,返回值也是int类型。
int (*pf)(int)=fun4;是声明了一个函数指针,这个指针指向这样的函数-----参数是一个int变量,返回值也是int,而fun4函数满足这个条件,所以此时指针pf是指向fun4这个函数的。
下面具体说选项的错误之处。
A: int a=15;int n=fun4(&a); fun4函数的参数是一个int变量,而此时赋给一个地址,a的地址,显形参和实参不一致,要报错的。
B:是可以运行出结果的 ,我在VS2005下运行结果 是47,但是 由于fun4函数要求参数是int类型,a*3.14是double类型,这里有类型转换,不安全,不推荐使用。
C:正确。
D;使用格式错误,*pf(256),是非法的间接寻址,会导致编译错误,运行是通不过的。
希望对你有帮助!!

回答2:

B和C都是正确的 (B的函数参数的a*3.14结果会自动转换为int,所以是正确的,对于函数指针,(*pf)和pf是一回事),可能出题者的答案是C,但B也是正确的

A和D是错误的

A.int a=15;int n=fun4(&a); //fun4的参数是int不是int*,参数类型不符
D cout<<*pf(256) //*pf(256)的含义是*(pf(256)),函数的返回值是个int,不是地址,对其作解除引用操作是错误的

回答3:

int fun4(int); //声明了一个函数,参数为整数。
int (*pf) (int) = fun4; //声明pf是个函数指针,指向函数fun4的入口地址。
选项A 错误。因为fun4(&a)中,fun4的参数成了a的地址,应该为整数。
选项B错误。因为pf是函数指针,不能直接带参数。
选项C正确。 (*pf)是一个函数,相当于fun4. 256可以看做是一个参数。
选项D错误。没这么用过。

回答4:

C。
解析:
A. int fun4(int)原型说明fun4是一个参数为整形,返回值为整形的函数。因此传递 &a (整形指针)作为参数就是错误的。
B.int(*pf) (int)=fun4说明 pf 是一个函数指针,其对应的函数应该以整形为参数,返回整形。调用函数指针的方式为 (*p)( param); 因此B错误,C正确,D错误。

回答5:

d对,因为*pf是指针,a和b一定不对,c和d我也不太明白但是感觉d对