niusouti.com
更多“已知“int *p=malloc(100);”,要释放p所指向的动态内存,正确的语句为()。”相关问题
  • 第1题:

    现有如下定义:struct aa{int a;float b;char c;}*p;现需用malloc函数动态的申请一个struct aa类型大小的空间(由p指向),则定义的语句为: 【17】 。


    正确答案:
    p=(struct aa *) malloc (sizeof(struct aa));

  • 第2题:

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

  • 第3题:

    有如下定义语句:int a[]={1,2,3,4,5);,则对语句int *p=a;正确的描述是( )。

    A.语句int *p=a;定义不正确

    B.语句int *p=a;初始化变量p,使其指向数组对象a的第一个元素

    C.语句int *p=a;是把a[0]的值赋给变量p

    D.语句int *p=a;是把a[1]的值赋给变量p


    正确答案:B

  • 第4题:

    在下面语句中,其含义为“p为指向含n个元素的一维数组的指针变量”的定义语句是 ( )

    A.int p [n]

    B.int * p( );

    C.int * p(n);

    D.int( * p)[n]


    正确答案:D

  • 第5题:

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

  • 第6题:

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

  • 第7题:

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

    A.p=2*(int*)malloc (sixeof(int))

    B.p=(int*)calloc (2*sixeof(int))

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

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


    正确答案:C
    解析:malloc函数的调用形式:malloc(size)。malloc函数用来分配size个字节的存储区,返回一个指向存储区首地址基类型为void的地址,可以利用强制类型转换将其换成所需的类型,这里需转换为整型(int*)。若不能确定数据类型所占的字节数,可使用sizeof运算符来求得,这里要求两个连续的整型动态存储单元即2*sizeof(int)。4个选项中只有C符合题意。

  • 第8题:

    数据结构里,假设指针变量为p指向某块内存区域,则回收这块区域所用的语句,不正确的是()。

    • A、malloc(p);
    • B、free(p);
    • C、relloc(p);
    • D、empty(p);

    正确答案:A,C,D

  • 第9题:

    设链表中的结点是NODE类型的结构体变量,且有NODE*p;为了申请一个新结点,并由p指向该结点,可用以下语句()。

    • A、p=(NODE*)malloc(sizeof(p));
    • B、p=(*NODE)malloc(sizeof(NODE));
    • C、p=(NODE)malloc(sizeof(p));
    • D、p=(NODE*)malloc(sizeof(NODE));

    正确答案:D

  • 第10题:

    单选题
    假定指针变量p定义为“int*p=newint(100);”,要释放p所指向的动态内存,应使用语句()。
    A

    deletep;

    B

    delete*p;

    C

    delete&p;

    D

    delete[]p;


    正确答案: B
    解析: 暂无解析

  • 第11题:

    单选题
    若指针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))。


    正确答案: D
    解析: 暂无解析

  • 第12题:

    单选题
    有说明语句int *p=new int[10];释放动态数组的正确语句是()
    A

    delete []p;

    B

    delete p[]

    C

    delete int[]p

    D

    delete p int[10]


    正确答案: D
    解析: 暂无解析

  • 第13题:

    定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为()。

    A、int*p=newint[30];

    B、int*p=newint(30);

    C、int*p=new[30];

    D、*p=newint[30];


    参考答案:A

  • 第14题:

    若已有定义int x;下列说明指针变量p指向x的正确语句是( )

    A. int p=&x;

    B. int *p=&x;

    C. int p=x;

    D. int *p=x;


    正确答案:B

  • 第15题:

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

  • 第16题:

    已有定义: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));。

  • 第17题:

    在下列叙述中,错误的一条是______。

    A.有下列语句组,则c=(*p)(a,b)与c=max(a,b)等价 int max();int(*p)();int c;p=max;

    B.执行下列语句后,则*p的值为1 int a=1,*p;*p=&a;

    C.已知指针变量p1指向数组元素a[1],p2指向数组元素a[4],则p2-p1=4-1=3

    D.2个指针变量指向同一数组时可以进行比较,其值为1或0


    正确答案:B

  • 第18题:

    动态分配一整型数据长度的空间,使指针p指向该存储空间,则下列空缺处应填入的正确语句是( )。 int*p; p=______malloc (sizeof(int));

    A.int

    B.int*

    C.(*int)

    D.(int*)


    正确答案:D

  • 第19题:

    假定指针变量p定义为“int *p=malloc(sizeof(int));”,要释放p所指向的动态存储空间,应调用的函数为()。

    Afree(p)

    Bdelete(p)

    Cfree(*p)

    Dfree(&p)


    A

  • 第20题:

    已知“float*p;p=newfloat[2];”,若要释放p所指向的堆中的这些字节,下列语句正确的是()。

    • A、deletep
    • B、deletep[]
    • C、delete[]p
    • D、deletep[2]

    正确答案:C

  • 第21题:

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

    正确答案:A

  • 第22题:

    单选题
    已知“int *p=malloc(100);”,要释放p所指向的动态内存,正确的语句为()。
    A

    free(p);

    B

    free p;

    C

    free(*p);

    D

    free[p];


    正确答案: D
    解析: 暂无解析

  • 第23题:

    单选题
    假定指针变量p定义为“int *p=malloc(sizeof(int));”,要释放p所指向的动态存储空间,应调用的函数为()。
    A

    free(p)

    B

    delete(p)

    C

    free(*p)

    D

    free(&p)


    正确答案: B
    解析: 暂无解析