c++知识总结(2)

来源:互联网 发布:单片机一帧是什么意思 编辑:程序博客网 时间:2024/06/05 21:18

6内存分配的形式有哪些

内存分配有三种方式:

一:从全局存储区域分配:这时内存在程序编译阶段就已经分配好,该内存在程序运行的整个周期都有效,如:全局变量、static静态变量。

二:从栈区分配:在执行函数的时候,函数中的局部变量的存储单元都可以从栈中分配,函数执行结束后这些存储单元都会被自动释放,实现从栈中分配存储单元运算操作内置于处理器的指令集中,效率很高但是分配的内存容量有限。

三:从堆中分配:也称为动态内存分配,在程序运行期间,可以使用mallocnew申请任意数量的内存单元,由程序员决定在什么时候使用freedelete释放内存。

 

7、栈和队列的区别

(1).队列先进先出,栈先进后出。

(2). 对插入和删除操作的"限定"

栈是限定只能在表的一端进行插入和删除操作的线性表。     

队列是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。  

(3).遍历数据速度不同。栈只能从头部取数据,也就最先放入的需要遍历整个栈最后才能取出来,而且在遍历数据的时候还得为数据开辟临时空间,保持数据在遍历前的一致性。队列则不同,它基于地址指针进行遍历,而且可以从头或尾部开始遍历,但不能同时遍历,无需开辟临时空间,因为在遍历的过程中不影像数据结构,速度要快的多

 

8变量声明与定义的区别

所谓定义就是(编译器)创建一个对象,为这个对象分配一块内存,并给它取上一个名字,这个名字就是就是我们经常所说的变量名或对象名。

声明有2重含义:

1) 告诉编译器,这个名字已经匹配到一块内存上,下面的代码用到变量或者对象是在别的地方定义的。声明可以出现多次。

2) 告诉编译器,这个名字已经被预定了,别的地方再也不能用它来作为变量名或对象名。

定义和声明的最重要区别就是:

定义创建对象并为这个对象分配内存,声明不分配内存。

 

9说明位操作提高程序运行效率的原理

在计算机程序中,数据的位是可以操作的最小数据单位,理论上可以用“位运算”来完成所有的运算和操作。一般的位操作是用来控制硬件的,或者做数据变换使用,灵活的位操作可以有效地提高程序运行的效率。运用位操作需要注意的是,因为CPU的不同而产生的问题。比如说,在PC上用这招编写的程序,并在PC上调试通过,在移植到一个16位机平台上的时候,可能会产生代码隐患。所以只有在一定技术进阶的基础下才可以使用这招。

 

10全局变量与局部变量的区别

作用域全局变量的生存周期为整个工程文件,局部变量函数结束后就被释放

 空间分配未初始化全局变量存放在用户空间的.bss数据段,初始化的全局变量存放在静态数据区,局部变量存放在空间

 初始化:全局变量默认初始化为0局部变量为随机值