Rumah > pembangunan bahagian belakang > C++ > Mengapa Saya Tidak Boleh Menetapkan Tatasusunan Secara Terus dalam C dan C , Tetapi Saya Boleh Dalam Structs?

Mengapa Saya Tidak Boleh Menetapkan Tatasusunan Secara Terus dalam C dan C , Tetapi Saya Boleh Dalam Structs?

Mary-Kate Olsen
Lepaskan: 2024-12-05 20:08:15
asal
739 orang telah melayarinya

Why Can't I Directly Assign Arrays in C and C  , But I Can Within Structs?

Tugasan Tatasusunan dalam C dan C

C dan C membenarkan penugasan tatasusunan secara ahli dalam struct tetapi tidak secara umum. Tingkah laku ini adalah hasil daripada evolusi sejarah bahasa.

Pada mulanya, tatasusunan dalam C telah dimodelkan sebagai penunjuk dalam ingatan, yang dikenali sebagai "tatasusunan masak." Apabila struktur diperkenalkan, tatasusunan dalam struktur telah dirawat secara berbeza untuk memastikan keselamatan ingatan. Ini membenarkan tatasusunan untuk ditugaskan mengikut ahli dalam struct tanpa menjejaskan keserasian dengan kod sedia ada.

Sebaliknya, penugasan tatasusunan di luar struct tidak disokong dalam reka bentuk asal C. Ini disebabkan oleh kebimbangan mengenai asas semula penunjuk dan kekurangan maklumat saiz untuk tatasusunan yang diisytiharkan sebagai parameter fungsi. Untuk mengelak daripada memperkenalkan pepijat dan isu keserasian, penugasan eksplisit menggunakan memcpy lebih diutamakan.

Walau bagaimanapun, seperti yang dinyatakan oleh Luther Blissett, spesifikasi C berkenaan penugasan struktur secara eksplisit membenarkan penugasan ahli tatasusunan terkandung. Ini adalah kesan sampingan reka bentuk yang tidak diingini, tetapi ia diterima sebagai satu cara untuk memudahkan penyalinan data dalam struct tanpa melanggar corak yang telah ditetapkan.

Oleh itu, sokongan untuk penugasan mengikut ahli tatasusunan dalam struct tetapi tidak secara amnya adalah warisan keputusan reka bentuk awal C dan evolusi bahasa seterusnya, menghasilkan perbezaan antara tatasusunan yang tertanam dalam struktur dan tatasusunan yang digunakan secara bebas.

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menetapkan Tatasusunan Secara Terus dalam C dan C , Tetapi Saya Boleh Dalam Structs?. 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