问一个c语言静态变量的问题? 5

f(inta){autob=0;staticc=3;b=b+1;c=c+1;return(a+b+c);}main(){inta=2,i;for(i=0;i<3;i++)... f(int a)
{auto b=0;
static c=3;
b=b+1;
c=c+1;
return(a+b+c);
}
main()
{int a=2,i;
for(i=0;i<3;i++)
printf("%d",f(a));
}
请问这个static c 后c有什么变化吗?一直保持是3?不自动加1 ?
回复楼下:那就是说b永远是1了?
展开
 我来答
一页凌风
2009-04-22 · TA获得超过1907个赞
知道小有建树答主
回答量:434
采纳率:25%
帮助的人:384万
展开全部
请问这个static c 后c有什么变化吗?
答:根据你的程序,c=c+1,所以c是有变换的。
一直保持是3?
答:不是,从3开始的自加。
不自动加1 ?
答:自加1.

static c表示c的值将被保存在静态区。通俗的说就是不论调用f(int a) 多少次,c只初始化一次,并且,其值是有保存的。

例如,你第一次进入,c初始化为3,加1后为4
第二次进入,c为4,加1为5
第三次,c为5,加1为6
...
依次保存住了c的值。
我们要明白,一个子函数的变量在子函数销毁的时候就应该消亡,但是static的变量是静态的所以一直存在。
相对于c,b就惨多了,每一次进入f,b都为0.其实,b是重新被创建了一次,因为结束f函数后,b就消亡了。

补充:b确实永远是1,正解
忘至白葬不情必0T
2009-04-22 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
不是有c=c+1么,每运行一次f,c的值就加1啊.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuhouzheng
2009-04-22 · TA获得超过8561个赞
知道小有建树答主
回答量:1010
采纳率:100%
帮助的人:1261万
展开全部
static变量的初始化只进行一次 ,运算结果可以长时间保留
auto变量的赋初值可以进行多次,每次调用f初值都为0(auto b=0; )
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bigkinglljf
2009-04-22 · TA获得超过412个赞
知道小有建树答主
回答量:420
采纳率:100%
帮助的人:152万
展开全部
有变化,每执行一次F子程序,C就会加1.因为静态变量会自动记录下你计算后的值,并给当前的变量.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式