| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 862 人关注过本帖
标题:[求助]变量作用域问题
只看楼主 加入收藏
SNAKEQX
Rank: 1
等 级:新手上路
帖 子:112
专家分:3
注 册:2006-4-11
收藏
 问题点数:0 回复次数:13 
[求助]变量作用域问题

自学迭代时,遇到问题,请看下面代码,

#include <stdio.h>

int mul(int n);
int sum=1;

int main() {
int n=5;
printf ("%d!=%d",n,mul(n));
return 0;
}

int mul(int n) {
if (n!=1) sum=n*(mul(n-1));
return sum;
}

那个全局变量看起来非常不爽,实际上我只在mul()里用,用完就应该归还给操作系统,
如果放在mul()函数里面,那就压根不对了.
我该怎么办啊??

搜索更多相关主题的帖子: 变量 
2007-09-14 14:05
ghack
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-7-9
收藏
得分:0 
放函数里用static int sum=1;

[此贴子已经被作者于2007-9-14 14:12:52编辑过]



2007-09-14 14:12
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
收藏
得分:0 
int mul(int n)
{
int sum;
if(n!=1)
sum=n*(mul(n-1));
else
sum=1;
return sum;
}
这样就可以了!你判断n=1时,直接返回了sum,sum是自动变量,值是不确定的!
象LS样用静态变量也可以!

[此贴子已经被作者于2007-9-14 14:17:33编辑过]

2007-09-14 14:16
SNAKEQX
Rank: 1
等 级:新手上路
帖 子:112
专家分:3
注 册:2006-4-11
收藏
得分:0 
那么静态变量在函数结束时会归还内存么???
2007-09-14 14:16
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
收藏
得分:0 
静态变量的生存期是整个源程序!程序执行完后才释放!
2007-09-14 14:20
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 

表态变量只有在程序结束的时侯才释放空间.


wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-09-14 14:20
SNAKEQX
Rank: 1
等 级:新手上路
帖 子:112
专家分:3
注 册:2006-4-11
收藏
得分:0 
3楼在mul中好像会出问题,因为每次进入mul函数时sum都会被刷新,不同的编译器会做不同的事情,我很怕这种事情。。。。。。。

[此贴子已经被作者于2007-9-14 14:26:25编辑过]


2007-09-14 14:21
SNAKEQX
Rank: 1
等 级:新手上路
帖 子:112
专家分:3
注 册:2006-4-11
收藏
得分:0 
以下是引用無邪的睡脸在2007-9-14 14:20:47的发言:
静态变量的生存期是整个源程序!程序执行完后才释放!

原来如此,但是全局变量不也是一样的么??我想让这个变量在处理完mul后马上从内存中消失,免得以后夜长梦多:)

[此贴子已经被作者于2007-9-14 14:24:55编辑过]

2007-09-14 14:23
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
收藏
得分:0 
回复:(SNAKEQX)以下是引用無邪的睡脸在2007-9-14 1...

那就用自动变量!但要有函数递归跳出的语句!n=1时就跳出!

2007-09-14 14:32
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
收藏
得分:0 
回复:(SNAKEQX)3楼在mul中好像会出问题,因为每次进...
不会有什么问题吧!会出现怎么的情况啊,请指正,我一直都这样写的!
2007-09-14 14:34
快速回复:[求助]变量作用域问题
数据加载中...
 
   



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

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