Rumah >pembangunan bahagian belakang >C++ >Mengapakah C dan C Membenarkan Tugasan Tatasusunan Memberwise dalam Struktur tetapi Bukan untuk Tatasusunan Kendiri?

Mengapakah C dan C Membenarkan Tugasan Tatasusunan Memberwise dalam Struktur tetapi Bukan untuk Tatasusunan Kendiri?

Patricia Arquette
Patricia Arquetteasal
2024-12-08 01:12:17273semak imbas

Why Does C and C   Allow Memberwise Array Assignment in Structs but Not for Standalone Arrays?

Mengapa Memberwise Array Assignment dalam Structs Disokong dalam C dan C

Walaupun tugasan ahli tatasusunan secara amnya dilarang dalam C dan C , ia disokong dalam struct. Percanggahan yang nyata ini berpunca daripada evolusi sejarah bahasa ini.

Dalam takrifan struct, tatasusunan diperkenalkan sebagai cara yang mudah untuk memperuntukkan memori bersebelahan untuk data. Walau bagaimanapun, dalam lelaran awal C, tatasusunan hanyalah penunjuk kepada kawasan memori. Menetapkan satu tatasusunan kepada tatasusunan yang lain dengan itu menghasilkan penetapan penuding, bukan salinan mengikut unsur.

Tingkah laku ini berterusan walaupun apabila penugasan struct ditambahkan dalam K&R C. Daripada mentakrifkan pengendali tugasan berasingan untuk struct, pengkompil hanya menggunakan operasi salinan memori (memcpy) untuk menetapkan semua ahli. Ini secara berkesan memasukkan tatasusunan dalam struct.

Oleh itu, tugasan struct secara tersirat memperkenalkan satu bentuk penugasan tatasusunan dalam konteks struct. Walau bagaimanapun, tugasan ini kekal terhad kepada dalam struct, dan memberikan tatasusunan terus kepada tatasusunan lain, walaupun jika ia terkandung dalam struct, masih tidak disokong dalam C dan C .

Pembezaan antara tatasusunan dalam struct dan tatasusunan umum mempunyai dua tujuan:

  • Keserasian: Ia memastikan ke belakang keserasian dengan kod C sedia ada yang bergantung pada aritmetik penunjuk dan manipulasi tatasusunan.
  • Keselamatan Jenis: Memerlukan penyalinan memori eksplisit untuk tugasan tatasusunan umum membantu mencegah ralat dan memastikan keselamatan jenis.

Atas ialah kandungan terperinci Mengapakah C dan C Membenarkan Tugasan Tatasusunan Memberwise dalam Struktur tetapi Bukan untuk Tatasusunan Kendiri?. 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