|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 全局变量和STATIC变量的初始化是在编译时进行的么
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
6387
人关注过本帖,
1
人收藏
标题:
全局变量和STATIC变量的初始化是在编译时进行的么
只看楼主
加入收藏
njzhangyuhao
等 级:
论坛游民
帖 子:197
专家分:35
注 册:2010-11-20
结帖率:
100%
楼主
收藏
(1)
问题点数:0 回复次数:5
全局变量和STATIC变量的初始化是在编译时进行的么
是么
2011-05-12 17:37
举报帖子
使用道具
赠送鲜花
tisyang
等 级:
蝙蝠侠
帖 子:132
专家分:737
注 册:2011-5-7
第
2
楼
收藏
得分:0
全局变量和STATIC变量的初始化是在 main函数之前进行的,不是在编译时进行。
程序实际的开始点是在 C 库的函数里,并不是 main 函数,C 库的函数 进行全局变量和静态变量的初始化,以及其他初始化操作然后跳转到
main 函数开始, main 函数结束的时候又会回到C库的函数里,进行必要的清理工作。
C++ 用无参数构造函数生成对象时候请勿在构造函数后添加无用的那一对括号,否则有可能会被当成函数声明而忽略,嗯,栈上构建的时候就是这样。
2011-05-12 18:12
举报帖子
使用道具
赠送鲜花
Kid_X
等 级:
黑侠
帖 子:216
专家分:515
注 册:2007-10-8
第
3
楼
收藏
得分:0
正如楼主所说,在编译时进行的。
[
本帖最后由 Kid_X 于 2011-5-12 23:38 编辑
]
2011-05-12 23:35
举报帖子
使用道具
赠送鲜花
njzhangyuhao
等 级:
论坛游民
帖 子:197
专家分:35
注 册:2010-11-20
第
4
楼
收藏
得分:0
球标准答案啊
2011-05-13 10:10
举报帖子
使用道具
赠送鲜花
Kid_X
等 级:
黑侠
帖 子:216
专家分:515
注 册:2007-10-8
第
5
楼
收藏
得分:0
全局变量和静态变量分两种,一种是带初始化的,一种是未初始化的。
可执行程序可以分为几个段,如代码段,主要放指令,数据段,存放已初始化的全局变量和静态变量,即那些初始化的值存放在该段中,该步骤是在链接是就做好了的。还有BSS段,存放未初始化的全局变量和静态变量,这个段在文件中不占空间,当程序加载进内存后,系统给这个段分配空间,并初始化为0,所以未初始化的全局变量和静态变量的值都是0。
二楼所说的C库函数的初始化工作不是初始化全局变量,而是初始化环境变量、还有就是main函数的入口参数。
我们写一个命令行下的c程序是可以传入参数的,如main为
int main(int argc, char **argv)
C库函数的初始化就是把我们传入的参数组织好,这样我们就可以通过argc和argv来访问我们传给main函数的参数了。
当然,C库函数的初始化操作还做一些其他的操作。
2011-05-13 11:19
举报帖子
使用道具
赠送鲜花
zaixuexi
来 自:上海
等 级:
火箭侠
威 望:
8
帖 子:858
专家分:3233
注 册:2010-12-1
第
6
楼
收藏
得分:0
1.程序
图片附件: 游客没有浏览图片的权限,请
登录
或
注册
2.crt之前的情况
图片附件: 游客没有浏览图片的权限,请
登录
或
注册
3.exe文件的情况
图片附件: 游客没有浏览图片的权限,请
登录
或
注册
4.是编译期完成的初始化,而不是运行期
技术问题,请不要以短消息方式提问
2011-05-13 12:30
举报帖子
使用道具
赠送鲜花
6
1/1页
1
快速回复:
全局变量和STATIC变量的初始化是在编译时进行的么
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.043218 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved