计算机二级

以下程序段中,能够通过调用函数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=(

题目

以下程序段中,能够通过调用函数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));}

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

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


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

第2题:

以下程序段中,能够通过调用函数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));}


正确答案:C

第3题:

以下程序中,能够通过调用函数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选项为所选。

第4题:

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

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

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

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

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


正确答案: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题:

以下程序段中,能够通过调用函数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选项为所选。

第7题:

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

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

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

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

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


正确答案:D

第8题:

以下程序中,能够通过调用函数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

第9题:

已有函数fun(a,b),为了使函数指针变量P指向函数fun,则使用的赋值语句是______。


正确答案:p=fun
p=fun 解析:函数入口地址称为函数的指针。可以使用指针变量指向fun函数,然后通过该指针变量调用此函数。赋值语句就是将函数fun的入口地址赋值给指针变量P,只需将函数名赋给P,不能写成“p=fun(a,b)”形式。函数名就代表了函数入口地址,即p=fun。