C语言程序设计

单选题有以下程序段 int *p; p=______ malloc(sizeof(int)); 若要求使p指向一个int型的动态存储单元,在横线处应填入的是(  )。A intB (int*)C int*D (*int)

题目
单选题
有以下程序段 int *p; p=______ malloc(sizeof(int)); 若要求使p指向一个int型的动态存储单元,在横线处应填入的是(  )。
A

int

B

(int*)

C

int*

D

(*int)

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

第1题:

以下程序运行后,输出结果是______。 fut(int**s,int p[2][3]) {**s=p[1][1];} main() { int a[2][3]={1,3,5,7,9,11}, *p; p=(int*) malloc (sizeof(int)); fut(&p,a); printf("% d\n",*p); }

A.1

B.7

C.9

D.11


正确答案:C

第2题:

若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元 int *p p=______malloc(sizeof(int)); 则应填入______。

A.int

B.int*

C.(*int)

D.(int*)


正确答案:D
解析:不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型*)。

第3题:

有以下程序

#include <stdio.h>

#include <stdlib.h>

int fun(int n)

{ int *p;

p=(int*)malloc(sizeof(int));

*p=n; return *p;

}

main()

{ int a;

a = fun(10); printf("%d\n",a+fun(10));

}

程序的运行结果是

A)0

B)10

C)20

D) 出错


正确答案:C

第4题:

若指针p已正确定义,要使p指向两个连续的整型动态存储单元,则正确语句是( )

A.p=2 *(int *)malloc(sizeof(int));

B.p=(int*)calloc(2*sizeof(int));

C.p=(int*)malloc(2* sizeof(int));

D.p=2 *(int*)calloc(sizeof(int));


正确答案:C

第5题:

以下程序段中,能够通过调用函数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
解析:选项A和B中p指向局部变量s的地址,退出函数fun后,该局部变量也被释放,不能使p指向一个整型单元地址;选项D中通过malloc函数分配一个整型地址,但不能被返回到main函数中,因为指针参数指向的地址不能被改变;选项C中,p是指向指针的指针,函数fun改变的是其指向的内容,而不是其地址。

第6题:

若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是

A.p=2*(int*)malloc(sizeof(int));

B.p=(int*)mall0c(2*sizeof(int));

C.p=(int*)malloc(2*2);

D.p=(int*)calloc(2,sizeof(int));


正确答案:A
解析:本题考核的知识点是manoc()函数的应用。该函数的调用格式是“malloc(n)”,作用是申请n个字符的存储单元并把该存储区的首地址作为返回值,实际调用的时候可在前面加上“(类型说明符*)”,以转换成需要的类型的地址。选项D多了一个参数,不符合malloc()函数的调用格式;整型变量在有的计算机系统里占4个字节,并不一定在所有的计算机系统里都是两个字节,所以选项C不正确;选项A中是申请一个整型的存储空间并把该存储空间的首地址乘以2,这样的做法是不正确的,其存储空间为没乘以2之前的存储空间的2倍的连续存储空间的地址,选项A不正确。所以,4个选项中B为所选。

第7题:

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

第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题:

若要用下面的程序片段指针变量p指向一个存储整型变量的动态存储单元int *p;p=______ malloc (sizeof (int));则应填入 ______。

A.int

B.int*

C.(*int)

D.(int*)


正确答案:D
解析:不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型*)。

第10题:

以下程序的输出结果是______。 fun(int**p,int a[2][3]) {**p=a[1][2]; } main() { int a[2][3]=}1,3,5,7,9,11},*p; p=(int*)malloc(sizeof(int)); fun(&p,a) ; printf("%d\n",*p); }

A.9

B.7

C.1

D.11


正确答案:D
解析:主函数中指针变量指向两字节的存储空间,这两个字节可以存放 int型数据,函数fun是将实参数组a中的元素a[1][2]的值11赋给指针变量p所指的存储空间,程序输出该空间的值。本题函数fun中形参p是二级指针变量,它指向实参指针变量p。

更多相关问题