1.const:定义常量,修饰形参,修饰返回值(指针)
2.static:静态变量调用维持值不变,限制变量作用域,限制函数作用域
3.static全局与普通全局区别:static变量值初始化一次,防止在其他文件中被引用;static函数在内存中只有一份
4.C++类的静态成员、方法不属于类的实例,属于类的本身并在所有实例间共享。
5.字节对齐原则:
1.结构体变量首地址能被最宽基本类型成员大小所整除。2.结构体每个成员相对于结构体首地址的偏移量都是成员大小的整数倍。 3.结构体总大小为结构体最宽基本类型成员大小的整数倍。
6.class中,普通函数不占用内存,虚函数占用一个指针大小的内存
7.sizeof用途:动态分配对象时,可让系统知道要分配多少内存
8. 类的内联函数会检查参数,也可做为成员函数。
9.内联函数和宏的区别:1.内联函数在编译时展开,宏在预编译时;编译时内联函数直接镶嵌到代码中,宏是简单的替换;内联函数可进行类型检查、语句是否正确等;宏定义时参数加(),避免出现二义性
10.指针和引用的区别:
1.初始化不同:引用在创建时必须初始化,即引用到一个有效对象,指针不必初始化
2.引用一旦初始化被指向一个对象后,就不能再指向其他对象;指针可改变指向
3.不存在NULL引用,引用不能为空
4.引用不需要测试合法性,指针需要
11.引用安全,不存在空引用,指针可能时野指针
12.常量指针:指向常量的指针,指向的地址的内容不能修改。char const * p2
指针常量:指针的常量,不可改变地址的指针,但是可对指向的内容改变 char * const p1
13.指针数组:数组中每个元素都是指针 int *a[10]
数组指针:指向数组的指针 int *a=int[10]
14.函数指针:指向函数地址的指针 int(*arr)(int,int)
指针函数:返回指针类型的函数。int *fun()
15.malloc/free new/delete的区别
malloc/free库函数,对非内部数据类型的对象而言,对象在消亡前要自动执行析构函数,但malloc/free不在编译器控制权限内,不能执行构造函数和析构函数;new/delete运算符
16.内存分配方式:
1.静态存储区:在编译时已经分配好,全局变量
2.栈:函数内部变量,函数结束时被释放。效率高,但分配的内存容量有限。
3.堆:动态分配,自己决定生存期