Permulaan Struktur C
Telah dipersoalkan sama ada mungkin untuk memulakan struktur dalam C menggunakan sintaks berikut:
struct address { int street_no; char *street_name; char *city; char *prov; char *postal_code; }; address temp_address = { .city = "Hamilton", .prov = "Ontario" };
Walaupun beberapa sumber mencadangkan bahawa gaya ini hanya disokong dalam C, ini tidak sepenuhnya tepat.
Batasan Teknikal
Walaupun C menyokong pengamulaan struktur menggunakan yang ditetapkan pemula, terdapat had teknikal: permulaan yang ditetapkan tidak disokong untuk ahli yang merupakan penunjuk atau rujukan. Memandangkan street_name, bandar, prov dan postal_code adalah semua petunjuk dalam contoh yang disediakan, sintaks permulaan yang ditetapkan tidak boleh digunakan untuk memulakan ahli ini.
Amalan Terbaik dan Kebolehbacaan
Walaupun sintaks permulaan yang ditetapkan boleh memberikan kebolehbacaan yang jelas, secara amnya dianggap sebagai amalan terbaik untuk memulakan struktur menggunakan gabungan pembina lalai dan permulaan ahli eksplisit. Ini membolehkan anda menentukan ahli mana yang akan dimulakan secara eksplisit dan mana yang tidak dimulakan.
Sebagai contoh, anda boleh memulakan struktur temp_addres seperti berikut:
address temp_addres = { 0, // street_no nullptr, // street_name "Hamilton", // city "Ontario", // prov nullptr, // postal_code };
Pendekatan ini menyediakan kebolehbacaan yang jelas dengan menggunakan komen untuk mengenal pasti setiap ahli dan nilainya. Selain itu, ia memastikan bahawa sebarang penunjuk yang tidak dimulakan secara eksplisit ditetapkan kepada nullptr untuk keselamatan.
Atas ialah kandungan terperinci Bolehkah Struktur C Dimulakan Menggunakan Pemula Ditetapkan untuk Ahli Penunjuk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!