C++ 全局变量和全局静态变量有什么区别呢?

为什么我在一个文件define中定义的全局静态变量在其他的文件中include“define”后,就直接使用吗,不是说不能使用吗?code(define.h):const... 为什么我在一个文件define中定义的全局静态变量在其他的文件中include “define”后,就直接使用吗,不是说不能使用吗?
code(define .h):
const char* TEST1 = "TEST1";
static const char* TEST22 = "TEST22";
依据是——————
2、全局静态变量是显示用static修饰的全局变量,作用域是所在的文件,其他的文件即使用extern声明也不能使用。

??????????为什么呢?
纠结啊~~
展开
 我来答
ChiyOf1990
2010-12-08 · 超过25用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:51万
展开全部
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。所以把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友96aa8d3
2010-12-09 · TA获得超过433个赞
知道小有建树答主
回答量:2306
采纳率:75%
帮助的人:900万
展开全部
静态的 就认为在程序开始运行事前就订了
在编译的时候,
全局变量是进了主函数后
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式