生命周期跟控制域是不一样的
static修饰局部变量 原本局部变量是在栈区 经过修饰后变为局部静态变量 储存区发生变化变为静态区 生命周期会和程序生命周期一样 而控制域不变还是只能在那个小地方使用
全局变量虽然控制域和生命周期的范围都是整个程序 但是如果想在程序中的不同文件使用 就需要引用extern去声明
如上图全局变量需在不同文件中使用需用extern声明使用
如果用static修饰全局变量 则全局变量会变为全局静态变量 它只能在自己所在的源文件内使用
函数能在整个项目中用,但是在不同文件中用就要跟全局变量一样需要声明(全局变量声明要用到extern ,函数用不用extern进行声明都可以 (因为默认有extern))
如果用static修饰函数 (该函数被修饰后效果跟全局变量被修饰后效果一样) 都是只能在该文件上使用
局部变量申请内存在栈区 全局变量申请内存在静态区 静态局部变量申请内存在静态区 而静态全局变量也申请在静态区 函数调用时才会在栈区申请内存 静态函数也是调用时才在栈区申请内存 对于其控制域和生命周期 有以下链接
对于函数调用时内存的申请如下(函数内部也会有变量的创建,从而内部会二次开辟空间)