为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

素胚勾勒不出你 2022-06-16 15:11:26
#include "stdio.h"void incr(){static s=0;++s;printf("%d\n",s);}main(){incr();incr();incr();}
查看完整描述

3 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

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

查看完整回答
反对 回复 2022-06-20
?
函数式编程

TA贡献1807条经验 获得超9个赞

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

查看完整回答
反对 回复 2022-06-20
?
千万里不及你

TA贡献1784条经验 获得超9个赞

#include "stdio.h"
void incr()
{
static s=0; //static 类型只初始化一次
++s;
printf("%d\n",s);
}

main()
{
incr(); //s=1
incr(); //由于s为static,s的值仍为1,现在++s后变成2
incr(); //3 解释同上
}


查看完整回答
反对 回复 2022-06-20
  • 3 回答
  • 0 关注
  • 174 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信