| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 592 人关注过本帖
标题:关于静态变量的问题?
只看楼主 加入收藏
流浪天边
Rank: 2
等 级:论坛游民
帖 子:100
专家分:53
注 册:2010-7-12
结帖率:79.31%
收藏
已结贴  问题点数:16 回复次数:8 
关于静态变量的问题?
静态变量在函数调用结束后仍然存在,但其函数不能引用
#include<stdio.h>
void main()
{
 int fac (int n);
 int i;
 for(i=0;i<=5;i++)
 printf("%d!=%D\n",i,fac(i));
}
int fac (int n)
{
static int f=1;
f=f*n;
return(f);
}
运行结果是:6!=6
其实真正运行结果:
i!=1
2!=2
3!=6
.......
 
搜索更多相关主题的帖子: 变量 静态 
2010-07-18 05:09
い﹏纠∽结丿
Rank: 1
等 级:新手上路
帖 子:2
专家分:6
注 册:2010-7-17
收藏
得分:3 
貌似是 变量那块内存以被收回,但没有被分配!~ 所以内容存在吧!
2010-07-18 08:04
vs_inzaghi
Rank: 5Rank: 5
来 自:湖北
等 级:职业侠客
威 望:1
帖 子:303
专家分:364
注 册:2009-8-17
收藏
得分:3 
貌似你这样写结果全为0……

我很懒,但我讨厌别人说我懒……
2010-07-18 08:05
vs_inzaghi
Rank: 5Rank: 5
来 自:湖北
等 级:职业侠客
威 望:1
帖 子:303
专家分:364
注 册:2009-8-17
收藏
得分:0 
我想问的是:你真的测试了吗?
按你写的原样编译执行后,结果是
0!=%D
1!=%D
2!=%D
3!=%D
4!=%D
5!=%D
把你的%D改成%d的话,就成了
0!=0
1!=0
2!=0
3!=0
4!=0
5!=0
                             

[ 本帖最后由 vs_inzaghi 于 2010-7-18 08:11 编辑 ]

我很懒,但我讨厌别人说我懒……
2010-07-18 08:10
Kid_X
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:216
专家分:515
注 册:2007-10-8
收藏
得分:3 
首先,照你的输出不会出现6!这个结果。
如果你一开始就求6!,那么结果当然就是6了。LZ对于局部静态变量还要仔细的理解一下。
2010-07-18 19:13
iFreeBSD
Rank: 4
等 级:业余侠客
威 望:4
帖 子:474
专家分:236
注 册:2007-11-5
收藏
得分:3 
看来又是被某些教材毒害的。

without further ado, let’s get started
2010-07-18 19:51
yibinbin
Rank: 1
等 级:新手上路
帖 子:1
专家分:3
注 册:2010-7-18
收藏
得分:3 
LZ循环控制变量写错了,应该从1开始,要不然结果都是0
2010-07-18 20:28
流浪天边
Rank: 2
等 级:论坛游民
帖 子:100
专家分:53
注 册:2010-7-12
收藏
得分:0 
谢谢大家对我的指点,真的很感谢!
2010-08-09 20:18
sdmscu
Rank: 2
等 级:论坛游民
帖 子:32
专家分:15
注 册:2010-7-7
收藏
得分:0 
对静态局部变量在编译时赋初值,即只赋初值一次,以后每次调用函数时不再重新赋初值而只是保留上一次函数调用结束时的值~!
2010-08-09 21:36
快速回复:关于静态变量的问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019030 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved