设有以下函数:void fun(int n,char* s){……}则下面对函数指针的定义和赋值均是正确的是(  )。

题目
单选题
设有以下函数:void fun(int n,char* s){……}则下面对函数指针的定义和赋值均是正确的是(  )。
A

void(*pf)();pf=fun;

B

void * pf();pf=fun;

C

void * pf();* pf=fun;

D

void(* pf)(int,char);pf=&fun;

参考答案和解析
正确答案: D
解析:
函数指针的一般定义形式为:
返回值类型 (* 指针变量名) ([形参列表]);
其中,“返回值类型”说明函数的返回类型,“(* 指针变量名)”中的括号不能省,括号改变了运算符的优先级。若省略整体则成为一个函数说明,说明了一个返回的数据类型是指针的函数,后面的“形参列表”表示指针变量指向的函数所带的参数列表。
以本题函数和函数指针为例,将函数的首地址赋给指针,可以是pf=fun;或者pf=&fun;
选项A,参数列表与题干函数不符,错误。选项B,函数指针定义格式错误。选项C。函数指针定义格式错误,复制格式也错误。答案选择D选项。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部【13】。要求形参名为b。

main()

{double s[10][22];

int n; ┆

fun(s);

}


正确答案:
void fun(double b[][22])

第2题:

请编写一个函数char *fun(char *s,int n)。函数fun()的功能是将字符串s中的字符“循环左移”n位。例如,输入“ABCDE”,则循环左移2位应输出“CDEAB”,输入“1234567”,循环左移3位应输出“4567123”。

注意:部分源程序已存在文件PROC13.cpp中。

请勿修改主函数和其他函数中的任何内容,仅在函数fun()的花括号中填写若干语句。

文件PROC13.cpp的内容如下:

//PROC13.cpp

include <iostream>

include <string>

using namespace std;

char *fun(char *s,int n);

int main()

{

char str[81];

int n;

cout<<"Enter a string(less than 80 char)\n”;

cin>>str;

cout<<"\n Enter n:";

cin>>n;

if(n>strlen(str))

{

cout<<"\n Data overflow";

return 0;

}

cout<<"The result is: "<<fun(str,n)<<end1;

return 0;

}

char *fun(char*s,int n)

{

//* * * * * *

}


正确答案:

第3题:

若有以下函数首部

int fun(double x[10], int *n)

则下面针对此函数的函数声明语句中正确的是

A)int fun(double x, int *n);

B)int fun(double , int );

C)int fun(double *x, int n);

D)int fun(double *, int *);


正确答案:D
答案 D
解析 : 函数首部 int fun(double x[10],int *n) 表示这个函数的返回值是整型,其第 1 个形式参数是一个双精度的一维数组,第 2 个参数是一个整型指针。在 C 语言中,一维数组的名字表示的是一维数组的地址,所以选项D是正确的。

第4题:

若有以下变量定义和函数调用语句: int a=5; fun(&a); 则执行下面函数后正确的输出结果是( )。 void fun(int*x) { cout<<++*x<<end1; }

A.3

B.4

C.5

D.6


正确答案:D
解析:fun函数中的x参数为整型指针变量。调用fun函数, &a是取a的地址,即将实际参数a的地址传递。函数fun中的*x是变量x所指的存储单元即值5。*运算符的等级高于++,所以先取值5,然后加1输出,即为6。

第5题:

若有以下调用语句,则不正确的fun函数的首部是______。 main() { …… int a[50],n; fun(n,&a[9]); …… }

A.void fun(int m, int x[])

B.void fun(kit s, kit h[41])

C.void fun(kit p, kit *s)

D.void fun(int n, int a)


正确答案:D

第6题:

对下列程序段的描述正确的是()。includeint Fun(int,int)void main(){cout<

对下列程序段的描述正确的是( )。 #include<iostream.h> int Fun(int,int) void main() { cout<<Fun(5,50)<<endl; } int Fun(int x,int y) { return X*X+y*y; }

A.该函数定义正确,但函数调用方式错误

B.该函数调用方式正确,但函数定义错误

C.该函数定义和调用方式都正确

D.该函数定义和调用方式都错误


正确答案:C

第7题:

有以下函数定义: void fun(int n, double x) {……} 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是( )。

A.fun(int y,double m);

B.k=fun(10,12.5);

C.fun(x,n);

D.void fun(n,x);


正确答案:C
解析:本题考查函数调用。函数调用时,实参前不需加类型说明,选项A)错误;题目中的函数没有返回值,所以选项B)错误;函数调用前不需要加类型说明,选项D)错误。

第8题:

设有以下函数

void fun(int n,char * s) { …… }

则下面对函数指针的定义和赋值均是正确的是

A)void (*pf)(); pf=fun;

B)viod *pf(); pf=fun;

C)void *pf(); *pf=fun;

D)void (*pf)(int,char);pf=&fun;


正确答案:A

第9题:

设在主函数中有以下定义和函数调用语句,且fun()函数为void类型,请写出fun()函数的首部______。

int main()

{

double s[10][22];

int n:

...

fun (s):

...

return 0;

}


正确答案:void fun(b[][22])
void fun(b[][22]) 解析:此题考核的知识点是函数的定义形式与数组名作为函数的参数。函数头的定义形式是“存储类型说明符数据类型说明符函数名(形参列表)”,此题没有涉及到函数的存储类别。如果函数的参数是数组,其第1维的长度可以省略,因此本题的函数首部可以写成:void fun(b[] [22])。

第10题:

对下列程序段的描述正确的是( )。 include int fun(int,int); void main(

对下列程序段的描述正确的是( )。 #include<iostream.h> int fun(int,int); void main() { cout<<fun(1,2)<<endl; } int fun(int x,int y) { return x+y; }

A.该函数定义正确,但函数调用方式错误

B.该函数调用方式正确,但函数定义错误

C.该函数定义和调用方式都正确

D.该函数定义和调用方式都错误


正确答案:C
解析:函数定义的一般形式为:类型标识符函数名(形式参数列表){声明部分;语句}。函数调用的一般格式为:函数名(实参列表)。而“int fun(int,int)”为函数声明,是可以不写形参名,只写形参的类型。所以,可以看出函数fun的定义和调用都是正确的。

更多相关问题