C 结构体成员的初始化
C 结构体是将各种类型的数据分组在一起的用户定义类型。一个常见的问题是关于结构成员的默认初始化。它们是否自动默认为零或需要显式初始化?
默认初始化
在 C 中,结构体的成员默认情况下不初始化为零。这意味着未初始化的结构成员可能包含垃圾值。为了避免这种情况,您需要显式地将成员初始化为所需的值。
初始化选项
初始化结构成员的方法有多种:
struct Snapshot { double x; int y; }; Snapshot s = {0,0}; // Initializes x=0 and y=0
struct Snapshot { double x; int y; }; Snapshot s = {}; // Initializes x=0 and y=0
struct Snapshot { int x; double y; Snapshot():x(0),y(0) { } }; Snapshot s; // Initializes x=0 and y=0
递归初始化:
值初始化是递归的,这意味着它还会初始化嵌套结构的成员。例如:
struct Parent { Snapshot s; }; Parent p = {}; // Initializes p.s.x=0 and p.s.y=0
结论:
C 结构体的成员默认情况下不会初始化为零。您必须使用上述方法之一显式初始化它们,以避免未定义的行为。
以上是C结构体成员是如何初始化的?的详细内容。更多信息请关注PHP中文网其他相关文章!