任何一个程序在使用之前必须进行变量定义和声明。
变量定义:为变量分配存储空间,还可以为为变量指定初始值。在一个程序中,有且仅有一个变量定义。
变量声明:描述其它地方创建的对象,可以多次出现。用extern声明一个变量。
例如说,如果程序之前没有出现过a这个变量,这时候要使用a,要使用变量定义,为其分配存储空间,于是这就是一个变量定义。假如之前已经出现过变量a,已经为其分配好了存储空间,这个时候要再次使用它,就需要用到变量声明。只需要通过extern int a 告诉程序,这个a在其他地方定义过。
在C语言中,对变量的存储类型说明有以下几种:
auto 自动变量
register 寄存器变量
extern 外部变量
static 静态变量
全局变量的作用域是整个程序,它只需要在一个源文件中定义,就可以作用于所有的源文件,其它不包含全局变量的源文件需要用extern关键字再次声明这个全局变量。
全局变量、静态局部变量、静态全局变量都在静态存储区分配空间,而局部变量在栈上分配空间。
静态变量存储在静态存储区,它的生命期和程序生命期相同。
全局变量和局部变量的区别:
1)存储方式:全局变量分配在全局数据区,后者分配在栈区。
2)生命周期:全局变量随主程序的创建而创建,随着主程序的销毁而销毁,局部变量在局部函数内部,函数退出时就不存在啦。
3)作用域:全局变量作用域为整个源程序,局部变量作用域为当前函数。
4)使用方式不同:通过声明后各个变量程序的各个部分都可以用到,局部变量只能在局部使用。
5)局部变量可以和全局变量重名,但是局部变量会屏蔽全局变量。