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中文網其他相關文章!