Rumah > pembangunan bahagian belakang > C++ > Apa yang Berlaku Apabila Anda Menentukan Tatasusunan Bersaiz Sifar dalam C/C?

Apa yang Berlaku Apabila Anda Menentukan Tatasusunan Bersaiz Sifar dalam C/C?

Mary-Kate Olsen
Lepaskan: 2024-12-26 04:19:08
asal
988 orang telah melayarinya

What Happens When You Define a Zero-Sized Array in C/C  ?

Kesan Menentukan Tatasusunan 0-Saiz dalam C/C

Apabila mentakrifkan tatasusunan dalam C/C , saiz tatasusunan mesti dinyatakan. Rasa ingin tahu sering timbul tentang gelagat mentakrifkan tatasusunan dengan saiz sifar, seperti yang berlaku dengan tatasusunan int[0].

Dalam contoh kod yang disediakan, GCC tidak menimbulkan sebarang ralat atau amaran semasa menyusun. Ini menimbulkan persoalan sama ada tatasusunan panjang sifar dioptimumkan semasa penyusunan.

Menurut piawaian ISO 9899:2011 (C99), tatasusunan tidak boleh mempunyai saiz sifar. Piawaian secara eksplisit menyatakan bahawa jika saiz tatasusunan ialah ungkapan malar, ia mesti mempunyai nilai yang lebih besar daripada sifar. Peraturan ini digunakan pada tatasusunan biasa dan tatasusunan panjang berubah (VLA).

Walaupun standard bahasa, sesetengah penyusun mungkin membenarkan takrif tatasusunan saiz sifar untuk keserasian warisan atau tujuan tertentu. Walau bagaimanapun, adalah tidak dijamin bahawa gelagat tatasusunan bersaiz sifar akan konsisten merentas penyusun yang berbeza dan percubaan untuk mengakses tatasusunan bersaiz sifar berkemungkinan menghasilkan gelagat yang tidak ditentukan.

Oleh itu, adalah disyorkan untuk mengelak daripada menentukan tatasusunan saiz sifar dan untuk mengendalikan kes yang saiz tatasusunan mungkin sifar dengan cara lain, seperti memperuntukkan memori secara bersyarat.

Atas ialah kandungan terperinci Apa yang Berlaku Apabila Anda Menentukan Tatasusunan Bersaiz Sifar dalam C/C?. 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