c语言问题,求解释

main()
{increment();
increment();
increment();
}
increment()
{static int x=0;
x+=1;
printf(“%d\n”,x);
}
结果是
1
2
3

static int x=0; 静态局部变量,只初始化一次,即这句只会执行一次

x+=1; //第二次就直接从本句开始执行increment()函数了,x为上次执行的结果
所以,三次输出为 1 2 3追问

其实我想问
{increment();
increment();
increment();
}
是什么意思

追答

这就是调用三次increment()函数。
你需要认真从头读一下教科书先,这是基本知识啊

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-29
这个主要是对static变量的理解,static变量是在静态存储区分配的内存,函数执行完成是不会释放的,所以会有保存上一次执行结果的效果,每次调用是在上次执行结果的基础上进行的
第2个回答  2014-12-29
static是静态变量:给你说个好理解的,它具有记忆性,也就是说会记忆上一次操作的变化
第3个回答  推荐于2016-07-12
static int x=0;

这样定义的是静态变量,只有首次执行到这句的时候才执行。
执行之后,x作为静态变量,一直存在。
所以第一次执行increment后,打印出1,且x=1。

第二次调用increment的时候,就不走变量定义这句了,x已经为1了。
执行完毕后打印出2,x=2。
同理,第三次调用increment的时候,不走变量定义这句了,x已经为2了。
执行完毕后打印出3,x=3。

main函数里的
increment();

是在调用increment()这个函数。依次调用了三次。本回答被提问者采纳