Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah Struktur C Dimulakan Menggunakan Pemula Ditetapkan untuk Ahli Penunjuk?

Bolehkah Struktur C Dimulakan Menggunakan Pemula Ditetapkan untuk Ahli Penunjuk?

Susan Sarandon
Susan Sarandonasal
2024-11-02 02:20:30853semak imbas

Can C   Structures Be Initialized Using Designated Initializers for Pointer Members?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn