ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 【我解C语言面试题系列】002 局部变量和全局变量小结? **局部变量和全局变量小结** **局部变量** 局部变量也称为内部变量。局部变量是在函数内作定义说明的。**其作用域仅限于函数内部**,离开该函数后再使用这种变量是非法的。 局部变量从存储方式上可分为动态(auto)存储类型和静态(static)存储类型。 动态存储类型的局部变量都是动态的分配存储空间,数据存储在动态存储区(栈)中。函数调用结束后自动释放,生存期是在声明该变量的函数执行过程。 静态存储类型的局部变量则是静态的分配存储空间,数据存储在静态存储区中。在程序整个运行期间都不释放,生存期贯穿于程序运行的整个过程。 函数中的局部变量,如不专门声明为static存储类别,默认都是动态地分配存储空间的,我们在平时的声明变量的过程中auto都是默认省略的。 **全局变量** 全局变量也称为外部变量,是在函数的外部定义的,它的**作用域为从变量定义处开始,到本程序文件的末尾**。全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序行完毕就释放。在程序执行过程中它们占据固定的存储单元,而不动态地进行分配和释放; 如果外部变量不在文件的开头定义,**其有效作用域只限于定义处到文件终**。 如果在定义点之前的函数想引用该外部变量,则应该在引用之前用关键字extern对该变量作“外部变量声明”。表示该变量是一个已经定义的外部变量。有了此声明,就可以从“声明”处起,合法地使用该外部变量。**其有效作用域就被拓展到从这个文件**extern**声明处到文件结束**。 如果在全局变量声明的时候,前面加上关键字static,那么其他文件就不能再访问和使用该变量,**其有效作用域只限于定义处到文件终**。 **局部变量能否和全局变量重名** 局部变量能和全局变量重名,但是局部变量会屏蔽全局变量。在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。 PS:**这对**extern**声明的全局变量也一样**。