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

题目

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

  • A、p=2*(int*)malloc(sizeof(int));
  • B、p=(int*)malloc(2*sizeof(int));
  • C、p=(int*)malloc(2*2);
  • D、p=(int*)calloc(2,sizeof(int))。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

若指针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为所选。

第2题:

设已经定义了指向整型变量的指针变量p和整型数组a,则p=a;语表示把数组a各元素的值赋给p。()

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


参考答案:错

第3题:

设有变量说明int(*p)[m],其中的标识符p是( )。

A.m个指向整型变量的指针

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

C.一个指向具有m个整型元素的一维数组的指针

D.具有m个指针元素的一维指针数组,每个元素都指向整型变量


正确答案:C
解析:本题考查指向数组的指针变量的声明。这里的p表示一个指向数组的指针;*p表示指针p指向地址的内容。

第4题:

已有定义:int *p;,请写出完整的语句,利用malloc函数使p指向一个整型的动态存储单元


正确答案:p =(int *)malloc(sizeof(int));
本题主要考查动态存储分配函数。动态内存分配就是指在程序执行过程中,动态分配或者回收存储空间分配内存的方法。动态内存分配相对于静态内存分配而言不需要预先分配存储空间;分配空间可根据程序的需要扩大或缩小。在C语言中,用于动态存储分配的函数只有malloc函数与calloc函数。
其中,malloc函数的调用格式为:(类型说明符*)malloc(sizeof(类型说明符)),例如,pi =(int *)malloc(sizeof(int));而函数calloc与malloc函数的区别仅在于一次可以分配的块区域,malloc一次只能分配一块,而calloc一次可以分配多块。
本题要求用malloc函数使p指向一个整型的动态存储单元,那么相应的语句应该为:p =(int *)malloc(sizeof(int));。

第5题:

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

A.int

B.int*

C.(*int)

D.(int*)


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

第6题:

若指针ps已正确定义,要使ps指向能够存储8个字符的动态存储单元,以下不正确的语句是( )

A.ps=(char*)malloc(8);

B.ps=(char *)malloc(sizeof(char)* 8);

C.ps=(char*)calloc(8,sizeof(char))

D.ps=8*(char*)malloc(sizeof(char))


正确答案:D

第7题:

若有如下图所示5个连续的int类型的存储单元并赋值,a[0]的地址小于a[4]的地址。 p和s为int型的指针变量。请对以下问题填空。

①若p已指向存储单元a[1]。通过指针p给s赋值,使s指向最后一个存储单元a[4]的语句是【 】。

②若指针s指向存储单元a[2],p指向存储单元a[0],表达式s-p的值是【 】。


正确答案:s=p+3; 2
s=p+3; 2 解析:若p指向了a[1],则p+3将指向其后的第3个元素a[4],把它赋值给s,s就指向了a[4],所以第1空填“s=p+3;”。由于s指向了a[2],p指向了a[0],s和p为指向同一个数组元素的指针变量,它们的差为它们指向元素的下标差值(即间隔多少个元素),所以“s-p”的结果为2。

第8题:

若有定义:int (*p)[4]; 则标识符 p( ) 。

A. 是一个指向整型变量的指针

B. 是一个指针数组名

C. 是一个指针,它指向一个含有四个整型元素的一维数组

D. 定义不合法


正确答案:C

第9题:

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

A.int

B.int*

C.(*int)

D.(int*)


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

第10题:

若指针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

更多相关问题