全局变量与全局静态变量的区别-阿里云开发者社区

开发者社区> 技术小阿哥> 正文

全局变量与全局静态变量的区别

简介:
+关注继续查看

全局变量与全局静态变量的区别: 

(a)若程序由一个源文件构成时,全局变量与全局静态变量没有区别。 

(b)若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独享,即:全局静态变量对组成该程序的其它源文件是无效的。 


静态全局变量的作用: 

(a)不必担心其它源文件使用相同变量名,彼此相互独立。 

(b)在某源文件中定义的静态全局变量不能被其他源文件使用或修改。 

例如:一个程序由两个源文件组成,其中在一个源文件中定义了“int n;”,在另一个源文件中定义了“static int n;”则程序给它们分别分配了不同的空间,两个值互不干扰。 



例如:下面在file1.cpp中声明全局变量n,在file2.cpp中定义全局静态变量n。文件file1.cpp和file2.cpp单独编译都能通过,但连接时,file1.cpp中的变量n找不到定义,产生连接错误。 

// file1.cpp 

# include <iostream.h> 

void fn() 

extern int n; 

void main() 



n=20; 

cout<<n<<endl; 

fn(); 



// file2.cpp 

# include <iostream.h> 

static int n; // 默认初始化为0,注意此处定义的n 只能在file2.cpp中使用。 

void fn() 



n++; 

cout<<n<<endl; 





静态函数:使某个函数只在一个源文件中有效,不能被其他源文件所用。 

定义:在函数前面加上static。 

说明:函数的声明和定义默认情况下在整个程序中是extern的。 

静态函数的效果: 

(1)它允其他源文件建立并使用同名的函数,而不相互冲突。 

(2) 声明为静态的函数不能被其他源文件所调用,因为它的名字不能得到。   
    

 

拙见: 
静态变量和函数一般都局限于一个编译单元也就是.cpp文件中。 
我想这是最主要的区别。   

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
PHP中全局变量$_REQUEST、 $_GET、 $_POST、 $_COOKIE 的关系和区别 (转载)
原文地址找不到了 sorry $_REQUEST、 $_GET、 $_POST、 $_COOKIE  的关系和区别:1.关系:$_REQUEST包含了$_GET、$_POST、$_COOKIE的所有内容,是它们的集合体。
857 0
阿里云服务器包年包月和按量付费的区别
阿里云服务器包年包月和按量付费有什么区别,为您介绍什么是阿里云服务器包年包月付费模式,以及按量付费模式。
1795 0
如何减少JS的全局变量污染
A,唯一变量 B,闭包
598 0
局部变量与全局变量在声明时的注意事项
/* ============================================================================ Name : TestVariable.
827 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
5828 0
C++ 调用lib 和 dll的 方法 及 动态库DLL与静态库lib的区别
C++ 调用.lib的方法: 一: 隐式的加载时链接,有三种方法     1  LIB文件直接加入到工程文件列表中   在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中"Add Files to Project"菜单,在弹出的文件对话框中选中要加入DLL的LIB文件。
2991 0
linux进程的堆栈空间_代码段(指令,只读)、数据段(静态变量,全局变量)、堆栈段(局部变量)、栈【转】
转自:http://blog.csdn.net/gongweijiao/article/details/8207333 原文参见:http://blog.163.com/xychenbaihu@yeah/blog/static/132229655201215115845553/    一)概述   .堆栈是一个用户空间的内存区域,进程使用堆栈作为临时存储。
778 0
9455
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载