C语言:二十五 函数中的static例子

static int j;
int k=0;

void fun1(void)
{
static int i=0; //注释①
i++;
}

void fun2(void)
{
j=0; //注释②
j++;
}

int main()
{
for(k=0; k<10; k++)
{
fun1();
fun2();
}
return 0;
}
问:i=? j=?

解析:
注释①:static int i=0;
这个定义与普通的int i=0不同,加了static后,这个i会存放在静态数据区,只能被初始化一次,在第一次调用fun1()时,创建i并初始化,之后再调用fun1()时,发现这个i已存在,那么这句就会被忽略掉。
注释②:j=0;
这就是普通的赋值,fun2()每次被调用都先将j赋0然后再自加成1。

答案:i=10, j=1。

相关推荐