作用域局部作用域在{}也就是花括号内就是局部作用域在局部作用域内定义的也就是局部变量全局作用域花括号之外的就是全局作用域变量如果定义在全局作用域就是全局变量可见性问题同一作用域中不能有同名标识符不同作用域存在嵌套关系局部作用域中可以直接使用定义在全局作用域的变量但是若局部作用域中存在同名变量则有些使用局部变量这规则可以叫做就近原则。变量生命周期局部变量局部变量的生命周期期从程序运行到其定义的语句处开始存在到离开作用域时销毁全局变量全局变量和静态变量从程序运行开始就存在程序运行结束才销毁静态变量static int a;在局部作用域static int a;全局作用域这个变量或函数只在这个.c文件内部可见其他文件无法访问。用处防止命名冲突。不同文件的同名static函数互不干扰。局部作用域核心作用正好和全局的相反它不限制作用域而是延长生命周期。其生命周期贯穿整个程序运行需要注意由于程序开始时就要初始化这个变量所以定义它时只能用常量register int a;这个关键字会建议将此变量放入寄存器如果一个变量被频繁访问把它放到寄存器里能显著提升性能。注意此时无法查找到a的存储地址。extern int a;告诉编译器变量a在其他文件定义有值引用其他文件的变量时使用。为了确保所有文件对同一个全局变量的声明一致通常把extern声明放在头文件中。auto int a;默认的存储类别提示将变量放到栈上。