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中文网其他相关文章!