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
Lepaskan: 2024-12-08 01:12:17
asal
277 orang telah melayarinya

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!

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