1.static/const的作用
共同点:
都是C/C++中的关键字
static:
修饰函数局部变量 延长了变量的生命周期 随着程序的结束而结束 但作用域只在定义它的函数体内
修饰全局函数 使函数作用域限制在定义它的源文件内 其他文件无法进行访问
修饰全局变量 使全局变量作用域限制在定义它的源文件内 其他文件无法进行访问
修饰类中成员变量 使类中所有对象共享一个静态成员变量 随着程序的结束而结束
修饰类中成员函数 静态成员函数只能访问类中其他静态成员 没有this指针
const:
修饰常量 使修饰的数据类型的常量不被修改
修饰指针常量 const * int ptr / const int * ptr 指针的指向不能改变 指向的值可以改变
修饰常量指针 int * const ptr 指针指向的值不可以改变 指针的指向可以改变
修饰常成员变量 使其在对象的整个生命周期内保持不变 必须在初始化列表中进行初始化
修饰函数参数 保护参数在函数内部不会被更改
修饰函数返回值 保护返回值不会被更改
修饰常成员函数 该函数不会修改类的任何成员类型 出了mutable修饰的成员变量
2.#define/typedef的区别
#define:
预处理指令 用于文本替换 不受作用域的限制 不进行类型检查
#typedef:
关键字 用于为已存在的数据类型定义新的类型别名 遵循正常的作用域规则 进行类型检查
3.volatile
告诉编译器 被其修饰的变量的值可能会被程序以外的因素(如操作系统、硬件等)所改变 因此每次使用该变量时都需要从内存中重新读取 而不能使用保存在寄存器中的缓存值
4.sizeof/strlen
sizeof:
用于计算变量或数据类型所占用内存的字节数(包含\0) 是操作符<