| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2561 人关注过本帖
标题:[求助]static关键字定义的外部静态变量和有extern关键字定义的外部变量有什 ...
只看楼主 加入收藏
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
结帖率:88.89%
收藏
 问题点数:0 回复次数:2 
[求助]static关键字定义的外部静态变量和有extern关键字定义的外部变量有什么区别

今天学习了变量的存储类型,其中说到了用static关键字定义的外部静态变量和有extern关键字定义的外部变量。

它们的值都具有永久性,那它们到底有什么区别了?

请高手指教? 谢谢了。

搜索更多相关主题的帖子: extern关键 static关键 静态变量 定义 
2007-04-22 17:43
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 
static--静态存储分配,又分为内部和外部静态。extern--全局变量(用于外部变量说明)。
。(2)外部变量①在函数外部定义的变量即为外部变量。②外部变量的作用域是整个程序(全局变量)。③在C+ +中,程序可以分别放在几个源文件上,每个文件可作为一个编译单位分别编译。外部变量只需在某个文件上定义一次,其他文件若要引用此变量时,应用extern加以说明。(外部变量定义时不必加extern关键字)。④在同一文件中,若前面的函数要引用在其后面定义的外部(在函数之外)变量时,也应用extern加以说明。⑤外部变量是由编译程序在编译时给其分配空间,属于静态分配变量,对于数值型(整型、浮点型和字符型)外部变量来说,其有隐含初值0。引进外部变量的原因:其一是只要程序运行外部变量的值是始终存在的;其二是外部变量可以在所有函数间共享。在C+ +中,可以使用外部变量,但是,必须要清楚使用外部变量的副作用。使用外部变量的函数独立性差,通常不能被移植到其他程序中,而且,如果多个函数都使用到某个外部变量,一旦出现问题,就很难发现问题是由哪个函数引起的。在C+ +中,尽量不用或少用外部变量,可使用参数在函数间进行数据的传递。(3)静态变量内部静态变量:①在局部变量前加上"static"关键字就成为内部静态变量。②内部静态变量仍是局部变量,其作用域仍在定义它的函数内。但该类型变量采用静态存储分配,当函数执行完,返回调用点时,该变量并不撤消,其值将继续保留,若下次再进入该函数时,其值仍然存在。内部静态变量有隐含初值0,并且只在编译时初始化一次。外部静态变量:①在函数外部定义的变量前加上"static"关键字便成了外部静态变量。②外部静态变量的作用域为定义它的文件,即成为该文件的"私有"(private)变量,只有其所在文件上的函数可以访问该外部静态变量,而其他文件上的函数一律不得直接访问该变量,除非通过外部静态变量所在文件上的各种函数来对它进行操作,这也是一种实现数据隐藏的方式。③与内部静态变量一样,外部静态变量也采用静态存储分配,有隐含初值0。在C+ +中,除了支持C风格的内部和外部静态变量的使用之外,还可将类成员声明成static,它有着不同的含义。

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-04-22 22:03
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 
哦,谢谢,看了你的回复,我似乎有点明白了,让我再看看.谢谢了哈.
2007-04-23 18:18
快速回复:[求助]static关键字定义的外部静态变量和有extern关键字定义的外部变量 ...
数据加载中...
 
   



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

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