| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 843 人关注过本帖
标题:如何保存子函数里面的部分变量。
只看楼主 加入收藏
david007
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-8-28
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
如何保存子函数里面的部分变量。
有一个别人写的程序,想保存子函数里的部分变量,而不想修改函数接口,如何处理?谢谢达人,
请详细指点一下!
搜索更多相关主题的帖子: 变量 函数 保存 
2009-08-28 20:03
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:20 
把要保存的变量定义为static 静态变量。如:static int n;
主函数没结束静态变量的值一直存在。

努力—前进—变老—退休—入土
2009-08-28 20:12
david007
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-8-28
收藏
得分:0 

这个子函数在 function1.c中
我在function1.c中定义 了static  int mm;
然后调在
 cal()
 { .....
   mm=xx;
   .....}
但是 下次调用显示打印:
mm=-858993466, mm=-858993466


[ 本帖最后由 david007 于 2009-8-28 20:36 编辑 ]
2009-08-28 20:28
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
你是要全局变量吗?
这样定义吧。
如你function1.c里的代码是:
static int mm; /*这里不加static也可以*/
set()
{
  mm=100;
}
·
·
·
如主函数文件是fun.c,里面的代码是:
# include <function1.c>  
main()
{
 set()
 printf("%d\n",mm);  /*这里mm值就是100,输出也就是100*/
}

努力—前进—变老—退休—入土
2009-08-28 21:01
david007
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-8-28
收藏
得分:0 
谢谢,楼上热心的朋友。
我就是想保存每次部分中间结果:
如循环调用6次
第一次:
mm=cc;//cc是第一次的中间结果;
第二次:
zz=mm-xx;
....

就是保存第一次调用的某个中间变量;后5次调用用这个变量减去某个值(如xx);
因为函数每次调用都结束cc的值就没有了,所以我想在不改变函数接口的情况下如何保存?
2009-08-28 21:16
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
谢谢你夸奖,互相学习,共同进步,(我心不热)~!
这样就把你的cc在函数里定义为static静态变量就行了。
如你function1.c里的代码是:
set()
{
  static int cc;
  cc++;
  printf("%d\n",cc);
}
·
·
·
如主函数文件是fun.c,里面的代码是:
# include <function1.c>
main()
{
set();     /*函数调用完结束,cc值会保存,到下次调用接原来的值作运算*/
set();
set();
}

[ 本帖最后由 UserYuH 于 2009-8-28 21:39 编辑 ]

努力—前进—变老—退休—入土
2009-08-28 21:34
快速回复:如何保存子函数里面的部分变量。
数据加载中...
 
   



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

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