Bolehkah Struktur C Dimulakan Menggunakan Pemula Ditetapkan untuk Ahli Penunjuk?

Susan Sarandon
Lepaskan: 2024-11-02 02:20:30
asal
852 orang telah melayarinya

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" };
Salin selepas log masuk

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
};
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!