参考答案和解析
正确答案:delete[]ptr;
更多“设在程序中使用如下语句申请了一个对象数组:Point * ptr = new Point[2];则在需要释放ptr指向的动态数组对象时,所使用的语句是()。”相关问题
  • 第1题:

    已知类A有公用数据成员a,且有A obj2;A*const ptr=new A;则下列语句正确的是

    A.ptr->a=100;

    B.ptr=&obj2;

    C.ptr++;

    D.ptr=obj2;


    正确答案:A
    本题主要考察const的使用const根据其位置的不同修饰不同的成份从而表现出灵活的特性考生容易混淆。此处const修饰的是指针即指针本身不能改变故选项B、C和D都是错误的。但是指针指向的地址里面的值确实可以改变的因此选项A是正确答案。

  • 第2题:

    以下说法正确的有()。

    A、使用ReDim语句将释放动态数组所占的存储空间

    B、使用ReDim语句也可以保留动态数组中原有的内容

    C、使用Erase语句将释放动态数组所占的存储空间

    D、使用Erase语句将释放静态数组所占的存储空间


    参考答案:BC

  • 第3题:

    设在程序中使用如下语句申请了一个对象数组Point*ptr=newPoint[2];当要释放ptr指向的动态数组对象时,所使用的语句是delete ptr。()

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


    正确答案:错误

  • 第4题:

    设有如下定义,则以下叙述中正确的是______。 int(*ptr)();

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

    B.ptr是指向int型数据的指针变量

    C.ptr是指向函数的指针,该函数返回一个int型数据

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


    正确答案:C
    解析:“int(*ptr)();”说明ptr是一个指向函数的指针,返回值是整型。*ptr两边的括号非常关键,表示*和ptr组合成一个指针变量,然后再和后边的圃括号结合,表示该指针变量*ptr是一个指向函数的指针变量。如果没有*ptr两边的括号,“int*ptr();”表示ptr是个函数,该函数返回指向整型数据的指针。

  • 第5题:

    (C语言)假设有如下定义方式int(**ptr)();,则以下叙述中正确的是

    A、ptr是指向一维数组的指针变量

    B、ptr是指向int型数据的指针变量

    C、ptr是指向函数的指针的指针,该函数返回一个int型数据 我是应届生

    D、ptr是一个函数名,该函数的返回值是指向int型数据的指针


    正确答案:
     

  • 第6题:

    设在程序中使用如下语句申请一个对象数组:

    Shape *p1=new Shape[3];

    则在需要释放p1指向的数组对象时,使用的语句是____________。


    正确答案:
    delete[]p1;

  • 第7题:

    假定AB为一个类,则执行 “AB *px=new AB[n];”语句时将()

    • A、 动态分配一个数组
    • B、 动态分配一个对象
    • C、 静态分配一个数组
    • D、 静态分配一个对象

    正确答案:A

  • 第8题:

    使用foreach语句遍历数组时,数组内部的指针会自动指向第一个单元。


    正确答案:正确

  • 第9题:

    下列语句能正确定义数组的是()。

    • A、用ReDim语句对同一数组重新定义时,可以改变数组大小、维数以及数组元素的数据类型
    • B、在同一个程序中,可以多次使用ReDim语句对同一个数组进行重新定义
    • C、在定义动态数组时,数组维的界不能是变量;定义动态数组时,数组维的界可以是变量
    • D、数组可以分为动态数组和静态数组。动态数组在程序运行时分配存储空间;静态数组在程序编译时分配内存空间

    正确答案:A

  • 第10题:

    单选题
    关于new运算符的下列描述中,错误的是(  )。
    A

    它可以用来动态创建对象和对象数组

    B

    使用它创建的对象或对象数组可以通过运算符delete删除

    C

    使用它创建对象时要调用构造函数

    D

    使用它创建对象数组时必须指定初始值


    正确答案: A
    解析:
    new创建对象时,不用显式调用构造函数,系统会自动调用构造函数。

  • 第11题:

    填空题
    设在程序中使用如下语句申请了一个对象数组:Point * ptr = new Point[2];则在需要释放ptr指向的动态数组对象时,所使用的语句是()。

    正确答案: delete[]ptr;
    解析: 暂无解析

  • 第12题:

    单选题
    关于new运算符的下列描述中,()是错误的。
    A

    它可以用来动态创建对象和对象数组

    B

    使用它创建的对象和对象数组可以使用运算符delete删除

    C

    使用它创建对象时要调用构造函数

    D

    使用它创建对象数组时必须指定初始值


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

  • 第13题:

    有如下程序:includeusing namespace std;class Point{public: static int number;

    有如下程序:#include<iostream>using namespace std;class Point{public: static int number;public: Point(){number++;} ~Point(){number--;}};int Point::number=0;void main(){ Point*ptr; Point A,B; { Point*ptr_point=new Point[3]; ptr=pb_point; } Point C cout<<Point::number<<endl; delete[]ptr; }运行时输出的结果是

    A.3

    B.4

    C.6

    D.7


    正确答案:C
    解析:本题考查的知识点是:静态成员,对象的构造,对象的生存周期。静态成员的特性是不管这个类创建了多少个对象,它的静态成员都只有一个拷贝(副本),这个副本被所有属于这个类的对象共享。本题的Point类中就定义了一个静态成员变量 number。其初始值为0,每次构造则自动增1,析构则自动减1,所以number是Point类对象的计数值。在主函数中,第1行定义了1个Point类型指针ptr,这并不会构造 Point类对象,因此number值为0;第2行定义了2个Point对象,所以此时number值为2;第3~6行是一个语句块,其中通过new运算符又定义了1个包含3个Point对象元素的数组,由于是动态创建的,所以其生命周期只能通过delete运算符来结束,否则会一直占据内存直到程序结束,所以现在number的值为5:第7行定义了1个 Point对象C,number的值变为6;第8行输出number的内容,所以最后输出的结果是6。故本题应该选择C。

  • 第14题:

    若有以下语句,则对x数组元素引用不正确的是( )。 int x[ ]={1, 2, 3, 4, 5,6}, *ptr;ptr=x;

    A.*(--ptr)

    B.*(ptr--)

    C.*(ptr++)

    D.*(++ptr)


    参考答案A

  • 第15题:

    语句int(*ptr)();的含义是

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

    B.ptr是指向int型数据的指针变量

    C.ptr是指向函数的指针,该函数返回一个int型数据

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


    正确答案:C
    解析:本题考查的是函数指针的定义。定义一个函数指针的形式为:类型标识符(*指针变量名)()。函数指针的值等于函数的入口地址,通过这个指针变量能够调用它所指向的函数。

  • 第16题:

    下列程序中需要清理动态分配的数组,划线处应有的语句是_______。 include class pers

    下列程序中需要清理动态分配的数组,划线处应有的语句是_______。

    include<iostream.h>

    class person

    {

    int age,tall;

    public:

    person( ){age=0;tall=40;cout<<"A baby is born."<<endl;}

    person(int i){age=i;tall=40;cout<<"A old person."<<endl;}

    person(int i,int j){age=i;tall=j;cout<<"a old person with tall."<<endl;)

    ~person( ){cout<<"person dead."<<endl;}

    void show( )

    {

    cout<<"age="<<age<<",tall="<<tall<<endl;

    }

    };

    void main( )

    {

    person*ptr;

    ptr=new person[3];

    ptr[0]=person( );

    ptr[1]=person(18);

    ptr[2]=person(20,120);

    for(int i=0;i<3;i++)

    ptr[i].show( );

    ______

    }


    正确答案:delete[]ptr;
    delete[]ptr; 解析:本题考察对象数组的销毁方法,注意删除对象数组时,[]内不要指定大小。

  • 第17题:

    有如下程序: #inClude<iostream> using namespaCe std; Class Point{ publiC: statiC int number; publiC: Point( )t.number++;} ~Point( ){number--;} }; , int P0int::number=0; int main( ){ Point *ptr: Point A,B; Point*ptr_point=new Point[3]; ptr=ptr_point;’ } Point C; Cout<<Point:::number<<endl; delete[]ptr; return 0; } 执行这个程序的输出结果是( )。

    A.3

    B.4

    C.6

    D.7


    正确答案:C
    本题考查默认构造函数.题目中定义.个对象A、B以及对象数组Point[3],又定义了对象C,共执行6次构造函数,number变为了6,所以本题答案为C。

  • 第18题:

    关于new运算符的下列描述中,()是错误的。

    • A、它可以用来动态创建对象和对象数组
    • B、使用它创建的对象和对象数组可以使用运算符delete删除
    • C、使用它创建对象时要调用构造函数
    • D、使用它创建对象数组时必须指定初始值

    正确答案:D

  • 第19题:

    使用new创建一个对象数组,该数组用指针pa指向,并使数组的3个元素都是类A的对象a1的值。应该是()


    正确答案:A a1,*pa;pa=new A[3];pa[0]=pa[1]=pa[2]=a1

  • 第20题:

    已有定义intk=2,*ptr1,*ptr2;且ptrl和Ptr2均已指向变量k,下面能正确执行的赋值语句是()

    • A、k=*ptrl+*ptr2;
    • B、ptr2=k
    • C、*ptrl=ptr2;
    • D、ptrl=*ptr2;

    正确答案:A

  • 第21题:

    单选题
    下列语句能正确定义数组的是()。
    A

    用ReDim语句对同一数组重新定义时,可以改变数组大小、维数以及数组元素的数据类型

    B

    在同一个程序中,可以多次使用ReDim语句对同一个数组进行重新定义

    C

    在定义动态数组时,数组维的界不能是变量;定义动态数组时,数组维的界可以是变量

    D

    数组可以分为动态数组和静态数组。动态数组在程序运行时分配存储空间;静态数组在程序编译时分配内存空间


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

  • 第22题:

    单选题
    假定AB为一个类,则执行 “AB *px=new AB[n];”语句时将()
    A

     动态分配一个数组

    B

     动态分配一个对象

    C

     静态分配一个数组

    D

     静态分配一个对象


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

  • 第23题:

    填空题
    使用new创建一个对象数组,该数组用指针pa指向,并使数组的3个元素都是类A的对象a1的值。应该是()

    正确答案: A a1,*pa,pa=new A[3],pa[0]=pa[1]=pa[2]=a1
    解析: 暂无解析