typedef:类型重定义,为基本数据类型定义新的类型名,type define
e.g.
unsigned int a = 0;
如果觉得unsigned太长了不想打
可以用typedef重新定义它们的名字
typedef unsigned int u_int//u_int就是重新定义的一个名字,之后使用u_int相当于使用unsigned int
static:静态的,可修饰局部变量、全局变量、函数。改变变量的生命周期,本质上是改变变量存储类型,将原本存在栈区的局部变量转到静态区。
修饰局部变量
在左侧代码中,由于test中的a没有static修饰,每次运行到反括号时a的值(a++后等于2)会自动销毁,生命周期到头,然后重复下面的代码。右侧由于有static修饰,出括号时a的值不会自动销毁,会保留下来,反复进行++。延长生命周期。
修饰全局变量
当同一工程下存在两个源文件时,若static修饰其中一个文件中的全局变量,则其他文件将无法使用该变量,即使声明也不行,只能在本源文件里使用。全局变量在声明的情况下可以被外部文件使用,因为其有外部链接属性,static将其修饰后变为内部链接属性。
修饰函数
static使函数只能在自己所在的源文件内使用,不能在其他源文件使用,类似于修饰全局变量。本质上是把函数的外部链接属性改为内部链接属性。