栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

静态变量初始化?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

静态变量初始化?

为什么要对静态变量进行确定性初始化而对局部变量不进行初始化?

了解如何实现静态变量。 它们的内存在链接时分配,并且它们的初始值也在链接时提供。 没有运行时开销。

另一方面,用于局部变量的内存是在运行时分配的。堆栈必须增长。你不知道以前在那里。如果需要,可以清除该内存(将其清零),但这会导致运行时开销。 C
++的理念是“您不为不使用的东西付费”,因此默认情况下它不会将内存归零。

好的,但是为什么将静态变量初始化为零,而不是其他一些值?

好吧,您通常希望对该变量执行某些操作。但是,您如何知道它是否已初始化?您可以创建一个静态布尔变量。但是随后还必须将其可靠地初始化为某种值(最好是false)。
指针呢?
您希望将其初始化为NULL,而不是一些随机垃圾。
结构/记录如何?它内部还有其他一些数据成员。将它们全部初始化为其默认值是有意义的。但是为简单起见,如果使用“初始化为0”策略,则不必检查单个成员并检查其类型。
您可以将整个存储区初始化为0。

这实际上不是技术要求。如果默认值不是0,则初始化的语义仍可以认为是明智的,但仍是确定性的。但是,那该值是多少?您可以很容易地解释为什么使用0(尽管实际上听起来有些随意),但是解释-1或1024似乎更难(尤其是变量可能不足以容纳该值,等等)。

而且,您始终可以显式初始化变量。

而且,您始终拥有C ++标准的8.5.6段,其中指出:“静态存储持续时间的每个对象都应在程序启动时初始化为零”。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/486381.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号