首页 > 后端开发 > C++ > C 结构体成员是否自动零初始化?

C 结构体成员是否自动零初始化?

DDD
发布: 2024-12-05 04:36:10
原创
192 人浏览过

Are C   Struct Members Automatically Zero-Initialized?

C 中结构体成员的值初始化

考虑以下结构体:

struct Snapshot
{
    double x; 
    int y;
};
登录后复制

如果声明了该结构体没有初始化,其成员是否自动设置为0?

答案:

不,成员不会自动初始化为 0。要将它们设置为 0,需要显式初始化:

Snapshot s = {0,0};
登录后复制

其他初始化选项:

  • 值初始化 ({}): 将所有成员初始化为其默认值,例如数字类型为 0。
Snapshot s = {}; // All members set to 0
登录后复制
  • 默认构造函数:如果struct 有一个带成员初始化的默认构造函数,它将用于隐式初始化。
struct Snapshot {
    int x = 0;
    double y = 0.0;
};

Snapshot s; // x = 0, y = 0.0
登录后复制
  • 带成员初始化的构造函数: 可以使用构造函数完成自定义初始化.
struct Snapshot {
    Snapshot(int x, double y) : x(x), y(y) { }
};

Snapshot s(0, 0.0); // x = 0, y = 0.0
登录后复制

注意:如果存在聚合初始值设定项列表,则无法进行构造函数初始化在结构声明中。

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

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