目录
static对变量修饰
局部变量
普通局部变量存储于进程栈空间,使用完毕会立即释放。
静态局部变量存储于进程的全局数据区,即使函数返回,它的值也会保持不变。
普通局部变量未赋值时,打印出来的是变量对应内存中以前的数据,(因为内存中的数据不能删除,只能覆盖,给变量赋值的过程就是覆盖数据的过程),而静态局部变量(用static修饰的变量,例如:static int i;)在声明时编译器会自动给他赋值0。
不管是普通局部变量还是静态局部变量,作用域皆为局部作用域,都随着声明函数的结束而结束。
下面放一段代码感受普通局部变量和静态局部变量的区别。
void fun_static()
{
static int i;
printf