Static修饰的局部变量,即为内存静态区的局部变量,何为内存?针对初学者而言,内存主要有三大区域构成,分别是栈区、堆区、静态区。栈区主要是存放临时属性的变量,如局部变量(普通的 未被修饰的)、函数的形式参数。我们知道所有编译时候或者是你想要在电脑上面运行程序相关的,基本上要在内存上开辟空间,堆区主要是动态内存管理,包括malloc、free、calloc、realloc...静态区包括存放静态变量和全局变量(生命周期较长)。
栈区特点:存放临时属性的变量 生命周期较短(进入函数开创内存空间,出函数销毁并释放内存空间);
堆区特点:动态内存管理;
静态区特点:变量的生命周期会变长,但是作用域不会改变,和原来保持一致。
static修饰之后的变量i 会存放在内存的静态区,生命周期会变长和全局变量的生命周期类似,但是作用域不会改变,保持原来。
回顾一下:main函数是程序的入口,程序自上而下进行读取执行命令,涉及调用函数,注意其作用于和生命周期的具体发生情形,未被修饰的局部变量在栈区,进入test函数是被创建,出去就会立刻被销毁,生命周期短暂,生命周期和作用域 作用时间紧密相连;若是被static修饰之后,局部变量i变成静态变量i 存放于静态区,作用时间(生命周期)变长,但并未改变其所用域。