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 중국어 웹사이트의 기타 관련 기사를 참조하세요!