运行后,输出什么?麻烦分步解释下!谢!!

#include "stdio.h"
void incr()
{
static s=0;
++s;
printf("%d\n",s);
}

main()
{
incr();
incr();
incr();
}

素胚勾勒不出你
浏览 175回答 3
3回答

慕的地8271018

要是s前面不加static修饰,结果当然就会是111,但加上后,就变成了123,原因在于静态局部变量改变了变量的生存期.局部变量是存储在栈中,但静态局部变量是存储在静态内存区,作用域是整个程序,所以函数每次被调用,对静态局部变量,不会再对他初始化,它可以记录函数的调用次数.但它的作用域没变,在函数体外还是不能引用它,

函数式编程

s没定义.static int s=0;表示静态变量,程序运行完后,仍在内存中,第一次incr();s=1,输出1第2次incr();s=2,输出2第3次incr();s=3,输出3

千万里不及你

#include "stdio.h"void incr(){static s=0; //static 类型只初始化一次++s;printf("%d\n",s);}main(){incr(); //s=1incr(); //由于s为static,s的值仍为1,现在++s后变成2incr(); //3 解释同上}
打开App,查看更多内容
随时随地看视频慕课网APP