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!