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声明也不能使用。
??????????为什么呢?
纠结啊~~ 展开
code(define .h):
const char* TEST1 = "TEST1";
static const char* TEST22 = "TEST22";
依据是——————
2、全局静态变量是显示用static修饰的全局变量,作用域是所在的文件,其他的文件即使用extern声明也不能使用。
??????????为什么呢?
纠结啊~~ 展开
7个回答
展开全部
1. 全局变量的作用域是整个项目,它只需要在一个源文件中定义就可以作用于所有的源文件,其它不包括全局变量定义的文件需要用extern关键字再次声明这个全局变量。
2. 全局变量、静态全局变量、静态局部变量都是在静态存储区(全局数据区)中分配空间的,而局部变量是在栈上分配空间的。
3. 全局变量、静态变量的生命期和程序生命期是一样的,在程序结束之后操作系统会回收空间。
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变(immutable)的。
在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象(如在Java和Visual Basic中);但另外一些语言可能使用其它概念(如C的对象)来指称这种抽象,而不严格地定义“变量”的准确外延。
推荐于2017-09-12 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:117538
获赞数:517191
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
向TA提问 私信TA
关注
展开全部
C++ 全局变量和全局静态变量的根本区别还是作用域的区别。
1、全局变量是不显示用static修饰的全局变量,但全局变量默认是静态的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量;
2、全局静态变量是显示用static修饰的全局变量,作用域是所在的文件,其他的文件即使用extern声明也不能使用。
1、全局变量是不显示用static修饰的全局变量,但全局变量默认是静态的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量;
2、全局静态变量是显示用static修饰的全局变量,作用域是所在的文件,其他的文件即使用extern声明也不能使用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、全局变量是不显示用static修饰的全局变量,但全局变量默认是静态的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量。
2、全局静态变量是显示用static修饰的全局变量,作用域是所在的文件,其他的文件即使用extern声明也不能使用。
2、全局静态变量是显示用static修饰的全局变量,作用域是所在的文件,其他的文件即使用extern声明也不能使用。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-12-09
展开全部
你理解的基本正确!
局部变量空间,就是堆栈空间,也就是栈空间。
从局部变量声明的时候,它就在堆栈空间了,而不是调用函数的时候,才让它入栈的。
堆和栈是两码事情,通常我们所说的堆栈,是指栈。
堆,是一种结构,是从全局区,分配一段区间,然后由一种内存分配算法进行管理。
另外,还有一个区,是常量区。
局部变量空间,就是堆栈空间,也就是栈空间。
从局部变量声明的时候,它就在堆栈空间了,而不是调用函数的时候,才让它入栈的。
堆和栈是两码事情,通常我们所说的堆栈,是指栈。
堆,是一种结构,是从全局区,分配一段区间,然后由一种内存分配算法进行管理。
另外,还有一个区,是常量区。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
作用域不同。
全局静态变量的作用域是文件,离开了所在文件就不认了,而全局变量是整个工程内可见的。
全局变量,在非定义所在文件使用的时候,只要用extern声明一下即可使用,静态的就不行了。
这些都是C语言的语法规则,记住了就行了,我们小人物只有去适应,以后你厉害了,可以参与C语言规则的修订,把它改了,就不纠结了!嘻嘻。
祝你好运!
全局静态变量的作用域是文件,离开了所在文件就不认了,而全局变量是整个工程内可见的。
全局变量,在非定义所在文件使用的时候,只要用extern声明一下即可使用,静态的就不行了。
这些都是C语言的语法规则,记住了就行了,我们小人物只有去适应,以后你厉害了,可以参与C语言规则的修订,把它改了,就不纠结了!嘻嘻。
祝你好运!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询