设为首页 加入收藏

TOP

9.2.4 静态持续性、外部链接性(2)
2013-10-07 15:42:24 来源: 作者: 【 】 浏览:79
Tags:9.2.4 静态 持续性 外部 链接

9.2.4  静态持续性、外部链接性(2)

程序清单9.6  support.cpp

 
下面是该程序的输出:
 

2.程序说明

程序清单9.5和程序清单9.6所示程序的输出表明,main( )和update( )都可以访问外部变量warming。注意,update( )修改了warming,这种修改在随后使用该变量时显现出来了。

在程序清单9.5中,warming的定义如下:

 
在程序清单9.6中,使用关键字extern声明变量warming,让该文件中的函数能够使用它:
 

正如注释指出的,该声明的的意思是,使用外部定义的变量warming。

另外,函数update()使用关键字extern重新声明了变量warming,这个关键字的意思是,通过这个名称使用在外部定义的变量。由于即使省略该声明,update( )的功能也相同,因此该声明是可选的。它指出该函数被设计成使用外部变量。

local( )函数表明,定义与全局变量同名的局部变量后,局部变量将隐藏全局变量。例如,local( )函数显示warming的值时,将使用warming的局部定义。

C++(www.cppentry.com)比C语言更进了一步--它提供了作用域解析运算符(::)。放在变量名前面时,该运算符表示使用变量的全局版本。因此,local( )将warming显示为0.8,但将::warming显示为0.4。后面介绍名称空间和类时,将再次介绍该运算符。从清晰和避免错误的角度说,相对于使用warming并依赖于作用域规则,在函数update()中使用::warming是更好的选择,也更安全。

全局变量和局部变量

既然可以选择使用全局变量或局部变量,那么到底应使用哪种呢?首先,全局变量很有吸引力--因为所有的函数能访问全局变量,因此不用传递参数。但易于访问的代价很大--程序不可靠。计算经验表明,程序越能避免对数据进行不必要的访问,就越能保持数据的完整性。通常情况下,应使用局部变量,应在需要知晓时才传递数据,而不应不加区分地使用全局变量来使数据可用。读者将会看到,OOP在数据隔离方面又向前迈进了一步。

然而,全局变量也有它们的用处。例如,可以让多个函数可以使用同一个数据块(如月份名数组或原子量数组)。外部存储尤其适于表示常量数据,因为这样可以使用关键字const来防止数据被修改。

 
在上述示例中,第一个const防止字符串被修改,第二个const确保数组中每个指针始终指向它最初指向的字符串。
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇9.2.5 静态持续性、内部链接性(1.. 下一篇9.2.4 静态持续性、外部链接性(1..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C语言中如何将结构体 (2025-12-24 22:20:09)
·纯C语言结构体成员变 (2025-12-24 22:20:06)
·C语言中,指针函数和 (2025-12-24 22:20:03)
·哈希表 - 菜鸟教程 (2025-12-24 20:18:55)
·MySQL存储引擎InnoDB (2025-12-24 20:18:53)