首页 > 后端开发 > C++ > C 结构体成员默认初始化为零吗?

C 结构体成员默认初始化为零吗?

Susan Sarandon
发布: 2024-12-15 06:06:12
原创
680 人浏览过

Are C   Struct Members Initialized to Zero by Default?

C 结构体的成员默认初始化为 0 吗?

C 结构体的未初始化成员的值不保证为 0。要显式初始化这些成员成员,使用初始化列表:

struct Snapshot
{
    double x; 
    int y;
};

Snapshot s = {0, 0}; // Explicitly initialize members to 0
登录后复制

或者,您可以使用{} 语法:

Snapshot s = {}; // Value initializes all members to 0
登录后复制

请注意,使用 {} 进行值初始化会递归进行,即使对于嵌套结构也是如此:

struct Parent { Snapshot s; };
Parent p = {}; // Value initializes both p and p.s to 0
登录后复制

如果结构具有构造函数,则必须显式初始化成员在这些构造函数中:

struct Snapshot {
    int x;
    double y;
    Snapshot(): x(0), y(0) { } // Initialize members in the constructor
};
登录后复制

或者,您可以使用默认值初始化语法 x(), y() 忽略类型并分配适当的初始值(0 表示 int,0.0 表示 double 等):

Snapshot(): x(), y() { } // Value initializes both x and y to 0
登录后复制

这对于模板特别有用。

以上是C 结构体成员默认初始化为零吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板