关键字const
1.修饰变量。
修饰的对象为常量,只读。
2.修饰指针。
const 也可以和指针变量一起使用,这样可以限制指针变量本身,也可以限制指针指向的数据。
const 离变量名近就是用来修饰指针变量的,离变量名远就是用来修饰指针指向的数据,如果近的和远的都有,那么就同时修饰指针变量以及它指向的数据。
3.修饰函数的参数。
用在函数形参中,如果形参是一个指针,为了防止在函数内部修改指针指向的数据,就可以用 const 来限制。
关键字static
用于定义全局静态变量
1、修饰局部静态变量
存储在静态存储区,在程序整个运行期间都不释放。在所处模块初次运行时进行初始化工作,且只操作一次。
2、修饰外部静态变量/函数
用来表示不能被其他文件访问的全局变量和函数。但为了限制全局变量/函数的作用域,函数或变量前加static使得函数成为静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件(所以又称内部函数)。注意此时,对于外部(全局)变量,不管是否有static限制,它的存储区域都是在静态存储区,生存期都是全局的。此时的static只是起作用域限制作用,限定作用域在本模块(文件)内部。
关键字auto
即为自动局部变量,存储在栈上,当函数结束时,随之释放。
关键字extren
声明变量是在其他文件正声明(也可以看做是引用变量)。
关键字register
声明寄存器变量。
关键字volatile
说明变量在程序执行中可被隐含地改变。
变量如果加了 volatile 修饰,则会从内存重新装载内容,而不是直接从寄存器拷贝内容。
确保本条指令不会因编译器的优化而省略,且要求每次直接读值。
关键字typedef
数据结构的表示(存储结构)用类型定义(typedef)描述。
与#define
不同,typedef创建的符号名只受限于类型,不能用于值。
typedef由编译器解释,不是预处理器。