C 結構初始化:探索不同的方法
在C 中,結構初始化經常會引發關於使用類似於以下特定語法的可能性的問題:本文深入探討了結構初始化的技術和實務面,解決了為什麼C 中沒有實現特定語法的問題。
指定初始化語法
如問題所示,C 支援指定的初始化語法,允許初始化結構體的特定成員。但是,C 中不支援此語法。
C 中不存在的原因
由於以下幾個原因,C 中未實現指定的初始化語法:
替代初始化方法
為了在沒有指定初始化語法的情況下實現所需的可讀性,C 提供了替代方法:
附註解的分割初始化器:
將初始化器分解為多行每個註解都提供了分配值的清晰指示:
address temp_address = { 0, // street_no nullptr, // street_name "Hamilton", // city "Ontario", // prov nullptr, // postal_code };
C 17 的結構化綁定:
C 17 引入了結構化綁定,它允許為struct 分配值使用命名變數的成員:
auto [street_no, street_name, city, prov, postal_code] = std::make_tuple(0, nullptr, "Hamilton", "Ontario", nullptr);
這種方法提供了明確賦值並增強了可讀性。
結論
而C 中使用的指定初始化語法未在C 中實現,C 提供了替代技術來增強結構初始化期間的可讀性和清晰度。這些技術(例如帶有註解和結構化綁定的拆分初始值設定項)提供了向結構成員賦值的有效方法,從而消除了對指定初始值設定項語法的需要。
以上是為什麼 C 不支援結構體的指定初始化器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!