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

第一次:
#include "stdio.h"
float aaa();
main()
{
printf("%f\n",aaa());
printf("%f\n",aaa());
return 0;
}
float aaa()
{
static float a=1.22;
a=a+1.22;
return a;
}

第二次:
#include "stdio.h"
float aaa();
main()
{
printf("%f\n",aaa());
printf("%f\n",aaa());
return 0;
}
float aaa()
{
float b
static float a=1.22;
b=a+1.22;
return b;
}


为什么第一次能保留上次的值,第二次的却不行呢?

搜索更多相关主题的帖子: include return 
2007-09-16 11:30
HensJimmer
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-8-20
收藏
得分:0 
第一个函数第一次用a=a+1.22改变了a值,第二次调用时a的值相当于是a+a+1.22
而第二个函数在第一次调用时是把a+1.22赋给b,而在第二次执行的是同一个,所以值不变
我是新人,所以解释可能会有错误,大家多批评

2007-09-16 12:08
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 
因为a是静态变量而b不是

偶学编程,也许本身就是一个错。。。
2007-09-16 12:32
cutboy
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-16
收藏
得分:0 
同意楼上的看法,你把b也定义为STATIC就能保留了.

2007-09-16 12:57
shuidi89
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-9-8
收藏
得分:0 
看看这些会对你有用!

static 是C中很常用的修饰符,它被用来控制变量的存储方式和可见性
static 声明的变量在C语言中有两方面的特征:

1)、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。
2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。


2007-09-16 13:16
bingkuboy
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-7-13
收藏
得分:0 
感谢你们,我明白了,我会继续努力的...

一个菜鸟热爱c 想向蓝天 翱翔...
2007-09-16 16:49
xiaofeige
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-9-17
收藏
得分:0 
还是可以的
2007-09-17 19:54
快速回复:[求助] 这个题不懂
数据加载中...
 
   



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

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