C语言的中静态变量

下面一个程序,运行结束后,f1,f2中的i和j分别是什么值?#include<stdio.h>staticintj;voidf1(void){staticinti=0;i... 下面一个程序,运行结束后,f1,f2中的i和j分别是什么值?#include<stdio.h>static int j;void f1(void){ static int i=0; i++;}void f2(void){ j=0; j++;}void main(){ int k; for(k=0;k<10;k++) { f1(); f2(); }} 函数每次调用时第一个语句就是把零赋值给i和j,也就是说,结果都是1,是这样吗?静态变量有什么特别之处。求通俗易懂的解释。 展开
 我来答
夷澜明巧
2019-10-14 · TA获得超过3646个赞
知道大有可为答主
回答量:3020
采纳率:29%
帮助的人:190万
展开全部
前面的答案都是错的,正确的答案应该为
i=10,,j=1 解释: 首先你要明确什么是静态定义static你理解“静态变量只接受第一次赋值”说明你对static还有一点认知,但是不完全正确 本题的关键在于
“静态全局变量
j
的定义”
还有你对
“赋初值”的理解 由于“如果在定义局部变量时不赋初值的话,对静态局部变量来说,编译时自动赋初值0”因此
static
int
j;

static
int
j=0;是完全等价的这样
函数f2定义中的
j=0;只是纯粹的赋值,则无论是第一次循环还是第10次循环,j=0;语句都不是一个初始化的语句,这点需要明确 我想你只要弄明白这点,本题的答案是怎样得来的你就完全清楚了,你主要是对static的理解不完整而已 附带一提,定义和声明函数时,如果参数类型为空可以省略即void
f1(void){......}void
f2(void){......}中的void是完全多余的,它和void
f1(){......}void
f2(){......}完全等价
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式