Permulaan Struktur C: Pendekatan Alternatif
Dalam C , tidak seperti C, tidak mungkin untuk memulakan struktur menggunakan tatatanda titik yang ditunjukkan di bawah:
<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>
Pertanyaan ini menimbulkan beberapa soalan:
Teknikal dan Praktikal Sebab
Secara teknikalnya, tiada had asas yang menghalang pelaksanaan permulaan notasi titik untuk struct dalam C . Walau bagaimanapun, Jawatankuasa Piawaian C telah memilih untuk tidak memasukkan ciri ini atas beberapa sebab praktikal:
Alternatif Pendekatan untuk Kebolehbacaan
Untuk meningkatkan kebolehbacaan, pertimbangkan perkara berikut alternatif:
<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>
Alternatif ini menyediakan permulaan yang jelas dan boleh dibaca sambil mematuhi prinsip keselamatan dan ketekalan jenis C.
Atas ialah kandungan terperinci Mengapakah permulaan notasi titik tidak disokong untuk struct dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!