谁能准确的解释一下什么是静态初始化?

freesmile 2001-09-30 01:58:06
是不是需要执行期求值的初始化就是静态初始化?
非静态变量可不可以有静态初始化?
...全文
245 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
longlong3 2001-10-09
  • 打赏
  • 举报
回复
thank you
招RD和QA 2001-10-08
  • 打赏
  • 举报
回复
http://www.csdn.net/develop/article/10/10828.shtm
Only_I 2001-10-08
  • 打赏
  • 举报
回复
.
haijiang_jin 2001-10-08
  • 打赏
  • 举报
回复
gz!!
nebula 2001-10-01
  • 打赏
  • 举报
回复
静态初始化是指编译时初始化,与之对应的是动态初始化,是运行时初始化;不要望文生义
Only_I 2001-09-30
  • 打赏
  • 举报
回复
gz
Only_I 2001-09-30
  • 打赏
  • 举报
回复
up
Only_I 2001-09-30
  • 打赏
  • 举报
回复
up
招RD和QA 2001-09-30
  • 打赏
  • 举报
回复
在C++中,这个限制已经取消了,
你可以这样写。

int i = rand(); // 有意思吧。

这样做是为了适应类的ctor,因为类的成员只能在ctor中初始化,无法在编译时求值。
magicblue 2001-09-30
  • 打赏
  • 举报
回复
yes,after the cfront 2.0
freesmile 2001-09-30
  • 打赏
  • 举报
回复
to Montaque
hehe,这个我知道,我是问他的初始化
Montaque 2001-09-30
  • 打赏
  • 举报
回复
比如在main()外面的全局变量!
freesmile 2001-09-30
  • 打赏
  • 举报
回复
"在C中,静态初始化只能为常量" c++中好像不一定非得是常量,比如:
extern int y;
int x=y+1;
main()
{
//...
}
是不是啊?
tjm 2001-09-30
  • 打赏
  • 举报
回复
学习
招RD和QA 2001-09-30
  • 打赏
  • 举报
回复
所有的全局变量,静态变量都会拥有静态初始化。
静态初始化是相对于运行时来说,指的是编译时即可确定值。
在C中,静态初始化只能为常量,或没有初值。

如:
// global, 有初值。
int i = 0;
// global,无初值。
int j;

已经初始化的变量放在.data节中,未初始化的置于.bss节中,如果是常量则放于.rdata节中,

在C++中,因为出现了class,所以静态初始化的概念有所扩展,所有全局变量,静态变量都认为是已经初始化的变量。
// global, value is 0
int i;
放于.data节中,

至于class object,
sometype obj;
编译时其值为0,运行时通过ctor赋值。
fsb_12345 2001-09-30
  • 打赏
  • 举报
回复
静态变量的初始化

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧