首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >静态结构的元素

静态结构的元素
EN

Stack Overflow用户
提问于 2015-05-04 07:43:00
回答 2查看 98关注 0票数 3

我想问你:静态结构的元素是否初始化为零?例如:

代码语言:javascript
运行
复制
static struct _radioSettings
{
   unsigned char radio_in;
   unsigned char radio_out;
}radioSettings;

因此,这个结构被放置在模块无线电设置.c中,如果radioSettings.radio_in和radioSettings.radio_out在编译时未初始化为零,我如何在模块无线电设置中初始化它们?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-04 07:53:00

静态,在C中,与结构的可见性有关,它除了从外部模块radio-settings.c中不可见之外,没有其他任何意义。

C中的结构是,而不是初始化为任何东西的。其字段的值是结构落在的内存值。所以,你不能指望这样的事情。

如果您想初始化结构,那么它很简单:

代码语言:javascript
运行
复制
memset( &radioSettings, 0, sizeof( _radioSettings ) );

您只需将其放在radioSettings的radioSettings函数中,即模块radio-settings.c中。

希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2015-05-04 08:12:15

所有全局变量都初始化为默认值。

C99标准(n1256)的6.7.8节初始化内容如下:

如果没有显式初始化具有自动存储持续时间的对象,则其值是不确定的。如果没有显式初始化具有静态存储持续时间的对象,则: -如果它具有指针类型,则初始化为空指针; -如果它有算术类型,则初始化为(正或无符号)零; -如果是一个集合,则根据这些规则(递归)初始化每个成员; -如果是一个联合,则根据这些规则初始化(递归)第一个指定的成员。

因此,对于您的结构,每个字段都被初始化为其默认值,即。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30025011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档