1 / 33
文档名称:

C++第七章习题解答.doc

格式:doc   页数:33页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C++第七章习题解答.doc

上传人:wc69885 2016/2/24 文件大小:0 KB

下载得到文件列表

C++第七章习题解答.doc

文档介绍

文档介绍:第七章动态内存分配****题 1 第七章动态内存分配****题一、基本概念与基础知识自测题 填空题 C/C++ 定义了 4 个内存区间: (1)、(2)、(3)和(4)。答案:(1 )代码区,存放程序代码; (2 )全局变量与静态变量区,存放全局变量或对象(包括静态); (3 )局部变量区即栈( stack )区,存放局部变量; (4 )自由存储区( free store ) ,即动态存储区或堆( heap )区。 静态定义的变量和对象用标识符命名,称为(1) ;而动态建立的称为(2),动态建立对象的初始化是通过(3) 实现(4)。答案:(1 )命名对象(2 )无名对象(3 )初始化式(initializer) (4) 显式初始化 在用 new 运算符建立一个三维数组 15*30*10 时,使用了(1) 个下标运算符,对应的用 delete 运算符注销这个三维数组时使用了(2) 个下标运算符。 new 返回的指针是指向(3) 的指针。答案:(1)3个(2)1个(3) 30行 10 列的 2 位数组 当动态分配失败,系统采用(1) 来表示发生了异常。如果 new 返回的指针丢失, 则所分配的自由存储区空间无法收回,称为(2) 。这部分空间必须在(3)才能找回,这是因为无名对象的生命期(4)。答案:(1) 返回一个空指针( NULL ) (2 )内存泄漏(3 )重新启动计算机后(4) 并不依赖于建立它的作用域 按语义的默认复制构造函数和默认复制赋值操作符实现的复制称为(1), 假设类对象 obj 中有一个数据成员为指针,并为这个指针动态分配一个堆对象,如用 obj 1 按成员语义拷贝了一个对象 obj2 ,则 obj2 对应指针指向(2)。答案:(1 )浅拷贝(2 )同一个堆对象 单链表的结点包含两个域: (1)和(2) 。使用链表的最大的优点是(3), 即使是动态数组也做不到这一点。答案:(1 )数据域(2 )指针域(3 )用多少空间,开多少空间第七章动态内存分配****题 2 进入单链表必须通过单链表的(1) ,如果它丢失则(2) ,内存也(3) ,在单链表中进行的查找只能是(4)。答案:(1 )头指针(2 )链表整个丢失(3 )会发生泄漏(4 )顺序查找 对链栈, 链的生成必须是向(1) 生成, 最新压栈的元素( 结点), 放在(2)位置, 弹出时从(3) 删除结点。对链队, 采用向(4) 生成, 新入队的结点放在链的(5) ,出队操作在(6) 位置。答案:(1 )向前(2 )链表头的位置(3 )链表头(4 )向后(5 )尾部(6 )链表头 在计算机中进行表达式的计算, 为解决优先级和运算的结合性, 必须使用(1)和(2) 。在中缀表达式中,每个双目运算符放在(3)。答案:(1 )数栈(2 )运算符栈(3 )它的两个运算符之间 为了能重复利用一个队空间,要求把队说明成一个逻辑上的(1)。答案:(1 )循环队列 二叉树的特点是: (1)和(2)。答案:(1 )每个结点最多有两个孩子(2 )子树有左右之分 二叉树的遍历是按(1) 分类,所谓中序遍历是(2)。答案:(1 )访问子树根节点次序(2 )先遍历该子树根结点的左子树回来后,接着再访问根结点,最后遍历右子树 二叉排序树又称(1)或(2)。其左子树上的所有结点均小于根结点的数据值,而右子树上的所有结点均大于根结点的数据值时,采用(3) 就可以得到一个(4)。答案:(1) 二叉搜索树(2 )树表(3)中序遍历(4)升序序列 简答题 new 运算符为一个变量或对象分配存储空间和为一个数组分配存储空间,使用方法第七章动态内存分配****题 3 上有什么不同?对应的 delete 运算符使用有什么不同? 答:为一个变量或对象分配存储空间其使用的格式如下: 指针变量名=new 类型名( 初始化式); 对于数组进行动态分配和撤销的格式为: 指针变量名=new 类型名[ 下标表达式]; 后者多一个[ 下标表达式] ,同时不能进行初始化。对应的 delete 运算符使用分别为: delete 指针名; delete [] 指向该数组的指针变量名; 后者多一个方括号, 如果 delete 语句中少了方括号, 因编译器认为该指针是指向数组第一个元素的指针,会产生回收不彻底的问题(只回收了第一个元素所占空间) ,加了方括号后就转化为指向数组的指针,回收整个数组。 delete [] 的方括号中不需要填数组元素数,系统自知。即使写了,编译器也忽略。 用 delete 删除 p 所指向的无名对象时, p 指针也同时被删除了,