| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 189 人关注过本帖
标题:关于存储类型的问题
收藏  订阅  推荐  打印 
toyix
Rank: 2
等级:注册会员
帖子:101
积分:1180
注册:2008-7-14
关于存储类型的问题

int a;这样定义一个全局变量  ,他属于什么存储类型,书上说,c语言规定,函数内凡未加存储类型说明的变量均视为自动变量(auto),不过auto属于动态存储方式啊。也就是说只有被使用时才分配内存,这与全局变量(刚定义时就分配内存也不符合啊),全局变量到底属于什么存储类型?


还有一个问题顺便确定一下,在main函数中声明的变量是局部变量吧?谢谢解答下这两个问题,
搜索更多相关主题的帖子: 类型  
2008-9-21 22:29
StarWing83
Rank: 12Rank: 12Rank: 12
来自:湖北工业大学
等级:版主
威望:9
帖子:2483
积分:26219
注册:2007-11-16

语言规定,函数内凡未加存储类型说明的变量均视为自动变量(auto)

请仔细看书。

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-9-21 22:35
小辛巴
Rank: 1
等级:新手上路
帖子:16
积分:280
注册:2008-8-30

这应该是变量的生存周期问题,全局变量在整个程序的执行过程中都不消亡,直到退出程序,
main()函数中的变量若无  static  就是局部变量
2008-9-21 23:02
toyix
Rank: 2
等级:注册会员
帖子:101
积分:1180
注册:2008-7-14

哦 谢谢楼上两位    那全局变量虽然没加static,那也是属于静态变量吧
2008-9-23 08:31
lingluoz
Rank: 4
来自:苏州科技学院
等级:高级会员
威望:3
帖子:623
积分:6680
注册:2008-2-2

是的

MAY 1, 1964 -- The Birth of BASIC
Over 40 years later, it still enables ANYONE to write their own programs.
P.S. 革命尚未成功 同志仍需努力
2008-9-23 08:49
blackkey
Rank: 2
等级:注册会员
帖子:159
积分:1696
注册:2005-6-8

看来大家还是没有搞清楚 加static修饰的全局变量 和不加static修饰的全局变量的用法


全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。

static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。

[ 本帖最后由 blackkey 于 2008-9-23 09:59 编辑 ]

2008-9-23 09:55
toyix
Rank: 2
等级:注册会员
帖子:101
积分:1180
注册:2008-7-14

很详细  谢了
2008-9-23 16:02
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.053434 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved