首頁 > 後端開發 > C++ > C 結構體成員是否自動零初始化?

C 結構體成員是否自動零初始化?

DDD
發布: 2024-12-05 04:36:10
原創
183 人瀏覽過

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