做用域是从空间的角度来分析的,c++的做用域以花括号分隔,定于于全部{ }之外的名字具备全局做用域,定义于{ }之内的名字具备块做用域html
生命周期是从变量存在的时间角度来分析的,生命周期能够分为静态存储期和动态存储期,这是由变量的静态存储方式和动态存储方式决定的c++
静态存储方式一般是指在变量在定义时就分配固定内存并一直保持不变, 直至整个程序结束,变量的内存在程序编译阶段就已经分配好函数
动态存储是指在程序执行过程当中,使用变量时才分配内存, 使用完毕时当即释放htm
c++的变量可分为静态局部变量、全局(外部)变量、自动变量、寄存器变量
blog
1)在函数体内用static声明的变量生命周期
2)定义时没有初始值将默认初始化为0内存
3)静态局部变量虽然生存周期为整个程序,可是其做用域仅限于定义它的函数内,也就是说在其余函数中不能使用它作用域
4)静态局部变量初始化的时机:c语言:编译阶段分配好内存以后,就会进行初始化;c++:static局部变量在执行相关代码时才会进行初始化get
1)在函数外部声明的变量称为全局变量,分为静态外部变量、非静态外部变量编译
2)静态全局变量:在函数体外用关键字static声明的变量,只容许被本源文件(.cpp)中的函数使用(static的隐藏做用)
3)非静态全局变量:在函数体外没有用关键字static声明的变量,容许被其它源文件中的函数使用,当其余源文件中的函数使用非静态外部变量时,须要在使用用前用关键字extern进行说明
1)自动变量意为有自动的生命周期
2)在函数体内或者在复合语句内,用关键字auto声明的变量,关键字auto能够省略,咱们常说的局部变量就是自动变量
3)定义时不初始化,其值是不肯定的
1)通常状况下,变量的值都是存储在内存中的,为提升执行效率,c/c++容许将局部变量存放到寄存器中,这种变量就称为寄存器变量
2)用关键字register声明
1)静态变量包含静态全局变量和静态局部变量
2)全局变量包含静态全局变量、非静态全局变量