一、常见的关键词:sizeof(strlen)、static、const、volatitle(会持续更新)
1、sizeof和strlen的区别
(1)sizeof是求数据类型所占空间的大小,是一个操作符,在编译时计算出结果。
(2)Strlen是求以\0结尾的字符串的实际长度,是一个函数,在运行时才运算出结果,使用strlen求长度时候要进行初始化。
2、static通过被问作用,以及在程序中有两个陷阱需要注意:函数中static修饰局部变量和static修饰全局变量
(1)static定义的全局变量只能在本文件中使用。
(2)加了static的局部变量会延长其生命周期,存在于整个程序的执行过程。但是其他函数无法使用。
(3)static函数只会在该模块中可见
3、const通常考察作用
(1)通常是定义常量
(2)修饰函数参数 返回值,被修饰的东西会被保护起来,不会改变。
4、volatile通常考察作用和使用环境
Volatile修饰的变量说明该变量的值会随时发生变化的,每次用的时候需要从存储该变量的地址中直接获取。
(1)中断服务程序中修改的供其他程序检测的变量需要加Volatile。
(2)多任务环境下个任务间共享的标志位需要加Volatile。
(3)存储器映射的硬件寄存器通常也要加Volatile。
5、extern:extern标识的变量或者函数声明定义在别的文件中,提示编译器遇到此变量和函数时候在其他模块中寻找其定义。
extern和typedef的不同在于:
(1)typedef是用来定义一种数据类型的别名,增强程序的可读性。而define主要是用来定义常量,以及书写复杂和使用频繁的宏定义。
(2)执行时间不同:typedef是编译过程的一部分,有类型检查的功能。define是宏定义,是预编译的部分,其发生在编译之前。
(3)作用域不同:typedef有作用域限定。define不受作用域约束,只要是在define声明后的引用都是正确的。
(4)对指针的操作不同:typedef和define定义的指针时有很大的区别。