笔者今天接到阿里巴巴的电话面试邀请,感觉基础知识薄弱。还需要加强学习,下面将这方面相关的知识整理,与大家共同学习共勉。
基础的知识: STL容器,算法。
重点的知识:C/C++强调速度和内存管理,指针,内存这是重点。
引用和指针的区别与联系
区别
- 指针是一个实体他在栈中有自己使用的空间,但是引用没有;
- 引用必须初始化,指针不用但是最好初始化
- 指针使用时必须加*,引用不用;
- 引用只能初始化一次是个专一的人,指针不是;
- 引用不用const去修饰,但是指针可以
- 指针和地址运用自增(++)不同,引用是值进行自增,而指针是地址进行自增;
联系
- 引用的内部使用指针实现的
- 引用是受了限制的指针
内存分配的3个空间哪个效率更高
分配效率:栈是机器系统提供的数据结构,计算机会在底层对栈提供支持,分配专门的寄存器存放栈的地址,压栈出栈都有专门的指令执行,这就决定了栈的效率比较高。堆则是C/C++函数库提供的,它的机制是很复杂的,例如为了分配一块内存,库函数会按照一定的算法(具体的算法可以参考数据结构/操作系统)在堆内存中搜索可用的足够大小的空间,如果没有足够大小的空间(可能是由于内存碎片太多),就有可能调用系统功能去增加程序数据段的内存空间,这样就有机会分到