1. 局部变量
普通局部变量存储于进程栈空间,使用完毕会立即释放。
静态局部变量使用static修饰符定义,即使在声明时未赋初值,编译器也会把它初始化为0。且静态局部变量存储于进程的全局数据区,即使函数返回,它的值也会保持不变。
变量在全局数据区分配内存空间;编译器自动对其初始化
其作用域为局部作用域,当定义它的函数结束时,其作用域随之结束
例如这个例子:
上面并没有为i赋值,但是static会自动为其初始化赋值0,当期运行一次加1的时候,数据也不会丢失,因为其存储在进程的全局数据区。
静态区(全局区):静态变量和全局变量的存储区域是一起的,一旦静态区的内存被分配, 静态区的内存直到程序全部结束之后才会被释放
说白了当用于局部变量的时候就和全局变量的作用一样。