具有静态存储持续时间的对象中未初始化的指针是否初始化为 NULL 或全零?
出于好奇,并且因为我现在手头没有标准的副本:
给定一个空指针不由全零模式表示的实现,具有静态存储持续时间的对象的未初始化指针成员是否会被初始化为正确的空指针值,还是全零值?
不太标准,更多代码:
struct foo {
void *p;
};
foo f;
给定 0x00000001 的 NULL 指针表示,对于 main() 开头的 fp 的按位表示我能期待什么?
out of curiousity and because I don't have my copy of the standard at hand right now:
Given an implementation where null pointers are not represented by an all-zeros pattern, will uninitialized pointer members of objects with static storage duration be initialized to the proper null pointer value, or to an all-zeros value?
Less standardese, more code:
struct foo {
void *p;
};
foo f;
Given a NULL pointer representation of 0x00000001, what can I expect for the bitwise representation of f.p at the beginning of main()?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
标准说(8.5/4):
所以
f
被有效地初始化为f = { (void *)0 }
,我们从 4.10/1 知道:因此您将获得正确的
NULL
值。The standard says (8.5/4):
So
f
is effectively initialised asf = { (void *)0 }
, and we know from 4.10/1:So you will get the correct
NULL
value.到正确的空指针值。请参阅 8.5/5
To the proper null pointer value. See 8.5/5