C语言程序设计 中的static函数问题

请教各位大师,C语言中的static函数指定某个变量为静态,有如下凝问待解!f(inta){autob=0;staticc=3;\\这里是指定c为静态变量,目的是要保留c... 请教各位大师,C语言中的static函数指定某个变量为静态,有如下凝问待解!

f(int a)
{auto b=0;
static c=3; \\这里是指定c为静态变量,目的是要保留c的初始赋值3不变?还是要保留最后给c的赋值不变呢?\\
b=b+1;
c=c+1; \\是要保留该运算式最终给c的赋值结果不变吗?
return(a+b+c);
}
main()
{int a=2,i;
for(i=0;i<3;i++)
printf("%d",f(a));
}
非常感谢!!!!!!!!!!!!
展开
 我来答
pangzibaibai
2013-02-02 · TA获得超过148个赞
知道小有建树答主
回答量:110
采纳率:0%
帮助的人:77.2万
展开全部

说白了,就是每次调用c的值都是上次调用c的数值,

1  static在代码块内部改变变量的储存方式。由动态改为静态

2  static作用于代码块的外部,改变了变量的连接属性。。。由内部链接改为外部链接

hylong102122
2013-02-05 · TA获得超过201个赞
知道答主
回答量:31
采纳率:0%
帮助的人:18.5万
展开全部
是保留最后的赋值!!
从你这个例子而言,如果在主函数中再调用一次f(int a)并输出,b的初值还是 0 ;但是 c 初始值 却是 4 返回值比第一次的多 1 。
深入一点解释:
把一个变量定义为static型,意味着 这个变量的存储在.data段。auto型的局部变量存储在栈上。
调用函数有一个释放栈空间的问题:
如果在被调函数中把一个变量定义为static型,他的地址不会释放!但是如果定义为默认的 auto型,他的空间会被释放!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f655510
2013-02-02 · TA获得超过123个赞
知道小有建树答主
回答量:82
采纳率:0%
帮助的人:69.1万
展开全部
f(int a)
{auto b=0;
static c=3; \\这里是指定c为静态变量,目的是要保留c的初始赋值3不变?还是要保留最后给c的赋值不变呢?\\
b=b+1;
c=c+1; \\是要保留该运算式最终给c的赋值结果不变吗?
return(a+b+c);
}
解答:
static c=3; \\这里是指定c为静态变量,在静态储存区,保留最后给c的赋值,这个C只能在这个函数里使用,但它的值一直存在,直到程序结束才消息,只要调用这个函数,取出C的值,那C的值就是上次修改的值

c=c+1; \\是要保留该运算式最终给c的赋值结果不变吗? 是的,一直保留到程序结束;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chiconysun
2013-02-02 · TA获得超过2.2万个赞
知道大有可为答主
回答量:5410
采纳率:92%
帮助的人:2519万
展开全部
static c=3;
代表只是在第一次运行时初始化为3,以后不再初始化
后面每次加的1都要被保留下来,因此第一次执行后c为4,第二次执行后c为5。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
911322073
2013-02-13 · 超过15用户采纳过TA的回答
知道答主
回答量:125
采纳率:0%
帮助的人:54.3万
展开全部
保留c的初始赋值3不变,只赋值一次。就不在初始话了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式