常用C++面试总结

时间:2023-03-09 07:55:32
常用C++面试总结
指定对齐值:#pragma pack(n),n=1,2,4,8,16改变系统的对齐系数
struct和union都是由多个不同的数据类型成员组成, 但在任何同一时刻, union中只存放了一个被选中的成员, 而struct的所有成员都存在。
在struct中,各成员都占有自己的内存空间,它们是同时存在的。
一个struct变量的总长度等于所有成员长度之和。
在Union中,所有成员不能同时占用它的内存空间,它们不能同时存在。
Union变量的长度等于最长的成员的长度。
对于union的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于struct的不同成员赋值是互不影响的。 static 的作用是该函数只作用在类型的静态变量上,与类的实类没有关系,而const的作用是确保函数不能修改类的实例的状态,与类型的静态变量没有关系。
const char *p:表示p指向的内容不可改变;
char const *p:表示p的地址是固定的,但是它指定的内容可以改变(常指针);
http://www.cnblogs.com/LUO77/p/5771237.html
http://www.cnblogs.com/bastard/archive/2011/12/08/2281236.html
http://blog.csdn.net/wdzxl198/article/details/9102759/ 头文件不能含有定义这个规则有三个例外:头文件可以定义类、值在编译时就已经知道的const对象何inline函数。这些实体可以在多个源文件中定义,只要这些实体在每个源文件中的定义相同。
链表和数组的区别:

(1)数组静态分配内存,链表动态分配内存;

(2)数组在内存中连续,链表不连续;

(3)数组元素在栈区,链表元素在堆区;

(4)数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n);

(5)数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)。