以下程序中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是A.main() { int *p; fun(p); … } int fun(int *p) { ints; p=&s;}B.main() { int *p; fun(&p); … } int fun(int **p) { int s; *p=&s;)C.#include main() { int *p; fun(&p); … } int fun(int **p) *p=(int*)malloc(2);}D.#inc

题目

以下程序中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是

A.main() { int *p; fun(p); … } int fun(int *p) { ints; p=&s;}

B.main() { int *p; fun(&p); … } int fun(int **p) { int s; *p=&s;)

C.#include main() { int *p; fun(&p); … } int fun(int **p) *p=(int*)malloc(2);}

D.#include main() { iht *p; fun(p); … } iht fun(iht *p) { p=(int*)malloc(sizeof(int)); }


相似考题
参考答案和解析
正确答案:C
解析:本题考核的知识点是指针变量作为函数的参数以及变量的作用域。在选项A中,main()函数中定义了一个指针变量p,调用fun()函数时把p传给形参p,在函数中让p指向局部变量s,由于函数调用返回后,局部变量s将被释放,因此无法实现让实参p指向一个整型单元,故选项A错误.选项B中实现的也是让实参p,指向一个在函数fun()定义的局部变量s,因此也是错误的;选项C在函数fun()中分配了两个字节的内存单元并把首地址赋值给形参p指向的变量,即main()函数的指针变量p中,由于整型变量占两个字节,因此,选项C是正确的;选项D在主函数中定义了一个指针地址变量p,并把指针变量的值传给形参变量p,在fun()函数分配了一个整型单元并把首地址赋值给行参指针变量p,由于C语言中变量作为参数是传值的,所以并没有改变对应实参指针变量的值,因此选项D也是错误的.所以,C选项为所选。
更多“以下程序中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是A.main() { ”相关问题
  • 第1题:

    以下程序中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是

    A.main( ) { int *p; fun(p); ┆ } int fun(int *p) { int s; p=&s;}

    B.main( ) { int *p; fun(&p); ┆ } int fun(int **p) { int s; *p=&s;}

    C.#include<stdlib.h> main( ) { int *p; fun(&p); ┆ } int fun(int **p) { *p=(int*)malloc(2);}

    D.#include<stdlib.h> main( ) { int *p; fun(p); ┆ } int fun(int *p) { p=(int*)malloc(sizeof(int));}


    正确答案:D

  • 第2题:

    已知函数原型"double fun();",要定义一个函数指针变量p指向该函数的首地址,则其定义语句为"double (*p)()=fun;"。()

    此题为判断题(对,错)。


    正确答案:正确

  • 第3题:

    int*p2表示的含义()。

    A./*p2是指向浮点变量的指针变量*/

    B./*p2是指向整型变量的指针变量*/

    C./*p2是指向字符变量的指针变量*/

    D./*p2是指向函数变量的指针变量*/


    正确答案:B

  • 第4题:

    说明语句int*(*p)();的含义是______。

    A.p是一个指向int型数组的指针

    B.p是指针变量,它构成了指针数组

    C.p是一个指向函数的指针,该函数的返回值是一个整型

    D.p是一个指向函数的指针,该函数的返回值是一个指向整型的指针


    正确答案:D

  • 第5题:

    若有函数fun(x,y),并且已经使函数指针变量p指向函数fun,则使用p调用函数fun的正确方法是( )。

    A.(*p)fun(x,y);

    B.*pfun(x,y);

    C.(*p)(x,y)

    D.*p(x,y)


    正确答案:C

  • 第6题:

    若有下列说明语句 int(* p)(); 则标识符p代表的是( )

    A.一个用于指向函数的指针变量,函数返回值的类型为int型

    B.一个带回值类型为整型的函数名

    C.一个用于指向整型数据的指针变量

    D.一个带回值类型为指针类型的函数名


    正确答案:A

  • 第7题:

    以下程序中调用cin函数给变量a输入数值的方法是错误的,其错误原是()。includevoid m

    以下程序中调用cin函数给变量a输入数值的方法是错误的,其错误原是( )。 #include<iostream.h> void main() {int*p,*q,a,b; p=&a; eout<<"input a:"; cin>>p; }

    A.*p表示的是指针变量p的地址

    B.p表示的是变量a的地址,而不是变量a的值

    C.*p表示的是指针变量p的值

    D.*p只能用来说明p是一个指针变量


    正确答案:B
    解析: p表示的是变量a的地址,定义后*p表示的是变量a的值。

  • 第8题:

    语句Char(*P)说明了( )。

    A.P是指向函数的指针,该函数返回一个Char型数据

    B.P是指向Char型数据的指针变量

    C.P是指向数组的指针变量

    D.P是一个函数名,该函数的返回值是指向Char型数据的指针


    正确答案:A
    P是指向函数的指针,该函数返回一个char型数据。

  • 第9题:

    以下程序调用scanf函数给变量a输入数值的方法是错误的,其错误原因是()。includemain(){

    以下程序调用scanf函数给变量a输入数值的方法是错误的,其错误原因是( )。 #include <stdio.h> main() { int *p,*q,a,b; p=&a; printf("input a:"); scanf("%d",*p); }

    A.*p表示的是指针变量p的地址

    B.*p表示的是变量a的值,而不是变量a的地址

    C.*p表示的是指针变量p的值

    D.*p只能用来说明p是一个指针变量


    正确答案:B
    解析:本题经过定义语句和赋值后,p表示的是变量a的地址,*p表示的是变量a的值。

  • 第10题:

    若下列各选项中所有变量已正确定义,函数fun通过return语句返回一个函数值,以下选项中错误的程序是( )。

    A.main( ) {...... x = fun(2,10);......} float fun(int a, int b){......}

    B.float fun( int a,int b){......} main( ) {......x = fun(i,j);......}

    C.float fun(int, int); main( ) {......x=fun(2,10);......} float fun(iht a, int b){......}

    D.main( ) { float fun(int i, int j); ...... x = fun(i,j);......} float fun(int a,int b) {......}


    正确答案:A
    解析:C语言程序从main函数开始执行,当程序中定义了多个函数时,通常情况下是先定义后调用。若被调用函数定义在主调函数之后,则必须先声明后调用。在选项A)中,先执行main函数,并调用了fun函数,而fun函数在此调用之前无定义也无声明,故无法正常识别调用,所以错误。

  • 第11题:

    以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误的原因是()。    main( )  { int *p,*q,a,b;     p=&a;     printf(“input a:”);     scanf(“%d”,*p);     ……  }

    • A、*p表示的是指针变量p的地址
    • B、*p表示的是变量a的值,而不是变量a的地址
    • C、*p表示的是指针变量p的值
    • D、*p只能用来说明p是一个指针变量

    正确答案:B

  • 第12题:

    在声明语句:int*f();中,标识符f代表的是()

    • A、一个用于指向整型数据的指针变量
    • B、一个用于指向一维数组的行指针
    • C、一个用于指向函数的指针变量
    • D、一个返回值为指针型的函数名

    正确答案:D

  • 第13题:

    说明语句"int (*p)(); "的含义是( )。

    A.p是一个指向一维数组的指针变量

    B.p是一个指针变量,指向一个整型数据

    C.p是一个指向函数的指针,该函数的返回值是一个整型

    D.以上都不对


    参考答案:C

  • 第14题:

    如果在某fun函数,要修改主函数中的某个变量的值,那么可以在fun函数中定义一个指针形参变量,通过指针变量间接引用主函数的变量。()

    此题为判断题(对,错)。


    参考答案:正确

  • 第15题:

    以下程序中调用cin函数给变量a输人数值的方法是错误的,其错误原因是includevoid ma

    以下程序中调用cin函数给变量a输人数值的方法是错误的,其错误原因是 #include<iostream.h> void main() { int*p,*q,a,b; p=&a; cout<<”input a:”; cin>>p; }

    A.*p表示的是指针变量p的地址

    B.p表示的是变量a的地址,而不是变量a的值

    C.*p表示的是指针变量p的值

    D.*p只能用来说明p是一个指针变量


    正确答案:B
    解析:p表示的是变量a的地址,定义后*p表示的是变量a的值。

  • 第16题:

    以下程序段中,能够通过调用函数fun(),使main()函数中的指针变量p指向一个合法的整型单元的是( )。

    A.main() {int*p; fun(p); … } int fun(int*p) {int s; p=&s; }

    B.main {int*p fun(&p); … } iht fun(int**p) {int s; *p=&s;}

    C.main() {int*p; fun(&p); } int fun(int**p) {*p=(int*)malloc(2);}

    D.main() {int*p; fun(p); } int fun(int*p) {p=(int*)malloc(sizeo(int));}


    正确答案:C
    解析:在选项A中,main()函数中定义了一个指针变量p,调用fun()函数时把p传给形参p,在函数中让p指向局部变量s,由于函数调用返回后,局部变量s将被释放,因此无法实现让实参p指向一个整型单元,故选项A错误。选项B中实现的也是让实参p,指向一个在函数fun()中定义的局部变量s,因此也是错误的;选项C在函数fun()中分配了两个字节的内存单元并把首地址赋值给形参p指向的变量,即main()函数的指针变量p中,由于整型变量占两个字节,因此,选项C是正确的;选项D在主函数中定义了一个指针地址变量p,并把指针变量的值传给形参变量p,在fun()函数中分配了一个整型单元并把首地址赋值给行参指针变量p,由于C语言中变量作为参数是传值的,所以并没有改变对应实参指针变量的值,因此选项D也是错误的。所以,C选项为所选。

  • 第17题:

    若定义函数int*func(),则函数func的返回值为( )。

    A.一个实数

    B.一个指向整型变量的指针

    C.一个指向整型函数的指针

    D.一个整型函数的入口地址


    正确答案:B
    解析:本题考考查的是指针函数。指针函数定义的基本格式为:类型说明符*函数名()。其中,“类型说明符”表示返回的指针。值所指向的数据类型。

  • 第18题:

    关于地址和指针,以下叙述正确的是( )。

    A.可以通过强制类型转换让char型指针指向double型变量

    B.函数指针P指向一个同类型的函数f时,必须写成:p=&f;

    C.指针P指向一个数组f时,必须写成:p=ecf;

    D.一个指针变量P可以指向自身


    正确答案:A
    函数指针P指向一个同类型的函数f时,可以写成:p=f,而不能写成材,选项B错误。函数名代表函数的入口地址,指针P指向一个数组f时,可以写成:P=f,也可写成&f,数组名f可以代表数组的首地址,选项c错误。指针变量指向的是地址,是个常量,不能将地址指向另—个地址,选项D错误。char型根据转化原则可以转化为double类型。因此答案为A选项。

  • 第19题:

    若有如下定义: int (*p)(), *q(); 则下列说法正确的是( )

    A.p是一个函数名,q是一个指针变量

    B.p是一个指向整型变量的指针变量,q是一个指向一维数组的指针变量

    C.p和q是等价的,都是指针变量

    D.p是指向函数的指针变量,函数的返回值是整型数据;q是带回指针值的函数


    正确答案:D

  • 第20题:

    请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。 注意:部分源程序在文件PROGl.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。


    正确答案:


    【考点分析】
    本题考查:求数组的最大值,需要运用循环语句,因为数组是二维数组,所以应使用二层for循环嵌套。使用for循环语句时需要注意循环变量的取值范围。
    【解题思路】
    此类求最大值或最小值的问题,我们可以采用逐个比较的方式,要求对数组中所有元素遍历一遍,并且从中找出数组最大值或最小值。首先定义变量max存放数组中的第一个元素的值,然后利用for循环逐个找出数组中的元素,并与max比较,如果元素值大于max,则将该值赋予max,循环结束后max的值即为数组最大值,最后将该值返回。
    【解题宝典】
    该类题目考查较多,要掌握逐行比较的方法。对于m*n二维数组,如采用逐行查找方法,代码实现为:


  • 第21题:

    已知一个类A,其中Fun()函数是类A的一个成员函数,A*p,a;p=&a;,则下面语句正确的是( )。

    A.语句p=&a;是把对象a赋值给指针变量p

    B.语句A*p,a;p=&a;调用两次类A的构造函数

    C.对语句*p.fun();的调用是正确的

    D.语句 p->fun();和语句 a.fun();等价


    正确答案:D
    解析:A是把对象的地址值赋给指针;B只会调用一次类的构造函数;C正确的调用应是(*p).fun()。

  • 第22题:

    若有函数fun(x,y),并且已经使函数指针变量p指向函数fun,则使用p调用函数 fun的方法是______。


    正确答案:(*p)(xy)。
    (*p)(x,y)。 解析: 一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址。我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使该指针变量指向读函数。然后通过指针变量就可以找到并调用这个函数。我们把这种指向函数的指针变量称为“函数指针变量”。函数指针变量定义的一般形式为:类型说明符(*指针变量名)();其中“类型说明符”表示被指函数的返回值的类型。“(*指针变量名)”表示“*”后面的变量是定义的指针变量。最后的空括号表示指针变量所指的是一个函数。

  • 第23题:

    程序中对fun函数有如下说明void*fun();此说明的含义是()

    • A、fun函数无返回值
    • B、fun函数的返回值可以是任意的数据类型
    • C、fun函数的返回值是无值型的指针类型
    • D、指针fun指向一个函数,该函数无返回值

    正确答案:C

  • 第24题:

    单选题
    以下程序的主函数中调用了在其前面定义的函数fun: #include  … main() {  double a[15],k;  k=fun(a);  … } 则以下选项中错误的fun函数首部是(  )。
    A

    double fun(double a[15])

    B

    double fun(double*a)

    C

    double fun(double a[])

    D

    double fun(double a)


    正确答案: D
    解析:
    由题目可知,fun函数中定义的应该是一个double型的指针变量。D项定义的是双精度型浮点数变量。答案选择D选项。