要塞随从特殊技能:c++中的一个小问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/04 06:54:49
外部变量和外部静态类变量的区别,请详细讲解,谢谢!

估计楼主想问全局变量和静态的全局变量有什么区别。其区别如下:

1.全局变量具有“外连接”属性。所谓“外连接”,打个比方,在某个文件里定义了一个全局变量 long a,那么这个全局变量对于其他文件是“可见的”。因此如果在另一个文件里也定义一个同名的全局变量,那么程序在连接时就会出错,提示已经存在了同名的全局变量。此时,其他文件若想要使用原先定义的那个全局变量则使用 extern long a;声明一下即可。

2.静态全局变量具有“内连接”属性。所谓“内连接”,打个比方,在某个文件里定义了一个静态全局变量static long a,那么这个静态全局变量仅仅只在这个文件里可见。如果其他文件里也定义一个同名的全局变量或静态全局变量,因为a只在定义它的那个文件里可见,所以在连接时也不会出错。

当然全局变量和静态全局变量也有共同点:
他们的生命周期一样,即:程序一开始运行就分配了它们的存储空间,在程序运行中,它们一直存在,而程序结束时,它们被销毁。

外部变量也是全局变量,可以说都可以调用,外部静态变量只能是静态函数等调用,而且静态变量的值不被清0

外部变量和外部静态类变量都是外部于这个程序块的变量。例如,外部于main()的,它可能是放在另一个文件里的变量,通过编译时的链接拼装进来的。

静态类变量,指编译时给它们分配了固定存储地址,从程序运行开始到运行结束,它们的物理存储地址不变。

对频繁使用的变量,我们定它为static,因为静态类变量的寻址速度快,节省运算时间。没有定为static的是动态分配地址,寻址速度慢。

简而言之,外部--指变量的定义域,static--指分配固定存储地址。