* 静态局部变量 存储于数据段 进程生命周期 函数作用域
* 未初始化 其值为0 因为未初始化的static及全局变量存储于数据段之bss段
* 进程执行前期会调用exec将整个bss段清0
静态局部变量: 1).初值为0。 2).延长生命周期但不改变作用域。
#include <stdio.h>
void func1(void)
{
int value=0;
printf("func1 value:%d\n",value);
value++;
}
void func2(void)
{
//static 变量声明或定义只执行一次
static int value=0;
/*
int tt=12345;
* 错误:初始值设定元素不是常量
static int temp=tt;
*/
printf("func2 value:%d\n",value);
value++;
}
int main(void)
{
int i;
for(i=0;i<5;i++)
{
func1();
}
for(i=0;i<5;i++)
{
func2();
}
return 0;
}
输出:func1里局部变量value的值没有改变,而func2里静态局部变量value的值有改变。
func1 value:0
func1 value:0
func1 value:0
func1 value:0
func1 value:0
func2 value:0
func2 value:1
func2 value:2
func2 value:3
func2 value:4