C 結構初始化:另一種方法
在C 中,與C 不同,不可能使用如下所示的點表示法來初始化結構:
<code class="c++">struct address { int street_no; char *street_name; char *city; char *prov; char *postal_code; }; // Invalid C++ syntax address temp_address = { .city = "Hamilton", .prov = "Ontario" };</code>
這個查詢提出了幾個問題:
技術和實踐原因
從技術上講,不存在任何潛在的限制阻止C 中結構的點表示法初始化的實現。然而,基於以下幾個實際原因,C 標準委員會選擇不包含此功能:
可讀性的替代方法
要增強可讀性,請考慮以下替代方法:
<code class="c++">address temp_address = { 0, // street_no nullptr, // street_name "Hamilton", // city "Ontario", // prov nullptr, // postal_code };</code>
<code class="c++">struct address { address(int sn, char* stn, char* c, char* p, char* pc): street_no(sn), street_name(stn), city(c), prov(p), postal_code(pc) {} int street_no; char *street_name; char *city; char *prov; char *postal_code; }; address temp_address(0, nullptr, "Hamilton", "Ontario", nullptr);</code>
這些替代方案提供明確且可讀的初始化,同時遵守C 的型別安全性和一致性原則。
以上是為什麼 C 中的結構不支援點表示法初始化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!