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中文网其他相关文章!