C語言中文網 目錄

C語言結構的初始化

當定義一個結構對象時,如果想顯式地初始化它,必須使用初始化列表:該列表放在一組大括號內,以逗號分隔各初始化器(initializer)或者個別結構成員的初始值。

初始化器和成員聲明時的順序有關:第一個初始化器被關聯到第一個成員,第二個初始化器被關聯到第二個成員,依此類推。當然,每個初始化器必須具有匹配對應成員的類型(或者,能隱式地轉換為成員類型)。如下所示:
Song_t mySong = { "What It Is",
                  "Aubrey Haynie; Mark Knopfler",
                  "Mark Knopfler",
                  297,
                  { 9, 26, 2000 }
                };

在該列表中,每個成員都有一個初始化器。因為成員 published 也是結構類型,所以其初始化器是另一個初始化列表。

可以使指定的初始化器個數少于結構的成員個數。在這種情況下,最后沒有對應到初始化器的成員會被初始化為 0。
Song_t yourSong = { "El Macho" };

在上述定義之后,除第一個成員以外,yoursong 的所有其他成員都是 0。成員中的 char 數組被賦值為空字符串,而成員 published 則包含無效的日期{0,0,0}。

如果結構對象屬于自動存儲類別,初始化器可以是非常量表達式。也可以用相同結構類型的已有對象來初始化一個新的自動結構:
Song_t yourSong = mySong;      // 兩個結構在一個語句塊內,為有效的初始化

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo