读书人

问个有关问题关于全局变量和局部静态

发布时间: 2013-11-18 00:11:49 作者: rapoo

问个问题,关于全局变量和局部静态变量
本帖最后由 hanhuiyu2012 于 2013-11-15 22:27:53 编辑 全局变量是什么时候赋初值的,是预编译的时候还是编译的时候还是执行的时候?
还有个就是局部静态变量是什么时候初始化的?
[解决办法]

引用:
额。楼上的没听懂我的意思呀,我是想说我在main函数外定义了一个全局变量,想知道他是什么时候被赋值的。因为程序执行肯定是从main进去呀。

全局变量在进入main函数之前初始化
局部静态变量在第一次进入该函数的时候初始化
[解决办法]
引用:
恩,这个答案比较靠谱,不过我想说的跟你说的不是一个过程。我说的是程序写好了,进行预处理或者编译的时候,会不会就已经对局部静态变量和全局变量初始化了?

预处理和编译是“把文本代码变成机器命令”的过程,程序尚未形成,自然没有分配任何资源,连内存都不存在,更不用提内存中的变量了
你想说什么我不清楚,我只知道“编译”和“变量”完全不是一个领域内的概念
[解决办法]
引用:
全局变量是什么时候赋初值的,是预编译的时候还是编译的时候还是执行的时候?
还有个就是局部静态变量是什么时候初始化的?

全局变量在编译的时候在对应的存储位置填入初始值
局部变量由于创建在栈上,每次进入时初始化
局部静态变量是建立在数据区,也是在编译的时候初始化,不需要代码
[解决办法]
引用:
那个经常说的全局变量和局部静态变量在编译的时候值就定下来了是什么意思?

你制定了明年去美国的计划,你明年身处的位置就已经定了,但那不代表你现在就在美国
全局变量和局部静态变量的初始值是在代码里确定的,编译的时候代码已经不会再更改所以已经可以知道其在内存中出现后的初始值,但那不代表它们已经在内存中出现,直到这个程序被执行

读书人网 >C语言

热点推荐