首頁 > 後端開發 > C++ > C 結構體成員預設初始化為零嗎?

C 結構體成員預設初始化為零嗎?

Susan Sarandon
發布: 2024-12-15 06:06:12
原創
682 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板