社区
C语言
帖子详情
分析一下结果
漁_夫
2010-08-20 07:54:33
static int j;
void fun1(void)
{
static int i = 0;
i ++;
}
void fun2(void)
{
j = 0;
j++;
}
int main()
{
int k;
for(k=0; k<10; k++)
{
fun1();
fun2();
}
return 0;
}
i,j结果?原因?
...全文
150
11
打赏
收藏
分析一下结果
static int j; void fun1(void) { static int i = 0; i ++; } void fun2(void) { j = 0; j++; } int main() { int k; for(k=0; k<10; k++) { fun1(); fun2(); } return 0; } i,j结果?原因?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lovestefanie
2010-08-24
打赏
举报
回复
[Quote=引用 10 楼 damon1118 的回复:]
i = 10
j = 1
1.因为i是static类型,在固定地址上的分配,这意味着对象是在一个特殊的静态区域上创建的,而不是每次函数调用的时候在堆栈上动态创建的,所以只初始化一次,且在fun1中可见,即可进行修改,每次的修改都会覆盖原来的数据,所有程序结束static i才释放内存。
2.而i是auto的每次在函数fun1调用的时候才会给i分配……
[/Quote]
+1
damon1118
2010-08-24
打赏
举报
回复
i = 10
j = 1
1.因为i是static类型,在固定地址上的分配,这意味着对象是在一个特殊的静态区域上创建的,而不是每次函数调用的时候在堆栈上动态创建的,所以只初始化一次,且在fun1中可见,即可进行修改,每次的修改都会覆盖原来的数据,所有程序结束static i才释放内存。
2.而i是auto的每次在函数fun1调用的时候才会给i分配内存,再进行初始化,fun1中所有东西的生命周期结就是函数被调用的过程,当fun1调用结束,分配给fun1的所有内存全部释放,此时就没有fun1和它内部的的i了。
svtanto
2010-08-23
打赏
举报
回复
i = 10
j = 1
static int j;
声明j是个全局变量,但是对本文件以外是不可见的
static int i = 0;
声明i是个局部变量,但是是static的,第一次调用时候执行i=0,以后就不再执行i=0,每次只执行i++,也就是说:
1、初始化只能在定义的同时完成
2、初始化代码只在第一次进入函数时候运行一次,以后不再运行
眼睛猥琐男
2010-08-23
打赏
举报
回复
而fun2中 j = 0;不是初始化操作, for循环每次都把它执行一次。 两函数差别就在这里。
眼睛猥琐男
2010-08-23
打赏
举报
回复
很明显是10 和 1;
主要的一个点就是:静态变量仅被初始化一次!即fun1中 static int i = 0; 仅执行一次。
这样楼主应该好理解一点。
东大坡居士
2010-08-20
打赏
举报
回复
应该是i=10,J=1
njhsliliangx
2010-08-20
打赏
举报
回复
类似问题。可以自己把CODE在实际的运行一下。注意:加些输出信息。就知道多少,也会发现结果的原由
c4185
2010-08-20
打赏
举报
回复
i=10,j=1吧,是我搞反了?
wing_0706
2010-08-20
打赏
举报
回复
void fun2(void)
{
j = 0;
j++;
}
-----------
调用一次这个函数 就赋值成0 再 加加 所以 一直为 1
i就不一样了。。 那个不是赋值操作 那句初始化只 执行一次
wing_0706
2010-08-20
打赏
举报
回复
#include <stdio.h>
static int j; //这是全局的静态变量 默认初始为0吧
void fun1(void)
{
static int i = 0; //这是局部的静态变量 初始为0只在函数第一次调用时 初始为0 以后就不管这句了
i ++;
}
void fun2(void)
{
j = 0;
j++;
}
int main()
{
int k;
for(k=0; k<10; k++)
{
fun1();
fun2();
}
return 0;
}
wing_0706
2010-08-20
打赏
举报
回复
j 是 1
i 是 10
静态变量只初始化一次啊
方差
分析
过程&结果解读
有必要再多费点口舌,解释
一下
以上描述。通俗一点,方差
分析
就是指
分析
单因素的变化给总体带来的变化和波动是否显著的过程。而总体的变化和波动是通过方差、标准差来度量的,问题也就转化为研究单因素的加入,样本...
傻瓜攻略(一)——MATLAB主成分
分析
(PCA)代码及结果
分析
实例
主成分
分析
主成分
分析
法(PCA)是一种高效处理多维数据的多元统计
分析
方法,将主成分
分析
用于多指标(变量)的综合评价较为普遍。 该方法的基本思想是运用较少的变量去解释原始数据中的大部分变异,通过对原始数据...
性能测试结果
分析
结果
下面说
一下
就有效的测试结果数据进行
分析
做一些思考后的见解。 1、在整个测试场景的执行的时候,你要留意测试的环境是否正常,测试的过程中是否发生异常,如果发生异常,应该立刻终止测试,应为异常的测试结果是不...
GSEA
分析
结果详细解读
在解读传统的富集
分析
结果时,经常会有这样的疑问,一个富集到的通路下,既有上调差异基因,也有下调差异基因,那么这条通路总体的表现形式究竟是怎样呢,是被抑制还是激活?或者更直观点说,这条通路下的基因表达...
excel回归
分析
结果解读
如果你的excel中没有数据
分析
这一选项,需要设置
一下
方法:文件-选项-加载项-勾选数据
分析
) 根据需要进行相关勾选设置 运算后一共出现三个表格,我们逐一来看 第一个表格-回归统计: 其中, Multiple...
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章