变量可以有3种不同的存储时间:
自动存储时间
静态存储时间
动态存储时间
1)自动变量
在一对大括号的范围内声明的变量,称为自动变量,具有局部作用域,一个自动变量在“作用域”中的时间从声明他的那一刻开始,一直到包含器声明的代码块结束为止。
由栈内存自动分配。栈默认的容量是1MB.
自动变量“出生”于他被定义之时,占用的空间在栈上分配,结束于与声明该变量之前的第一个开始开始大括号。
每次执行包含一个自动变量声明的语句块是,这个变量就被重新创建。
2)全局变量
在所有代码块和类之外声明的变量称为全局变量,在声明全局变量的位置之后,文件内的所有函数都可以访问他们。如果在程序的最顶部声明了全局变量,那么从文件内的所有位置都可以访问他们。
全局变量的初始化发生在main()函数执行之前,所以在变量作用域的任何代码内,始终可以使用它们。
全局变量被具有相同名称的局部变量隐藏,但是,可以使用作用域解析运算符(::)获得全局变量。
3)静态变量
static在代码的作用域内声明一个变量,但是要让他有静态的存储时间。
在一个代码快内声明,并且只能从这个代码块(或者他的子块)内部使用他,但是在程序的生存期内,他将持续存在。他的作用域仍然是这个代码块,但却却具有静态存储时间。如static int count;