Memahami Sekatan Penggunaan Const Int sebagai Saiz Tatasusunan
Dalam C , penggunaan const int sebagai saiz tatasusunan tertakluk kepada sekatan tertentu. Mari kita teliti mengapa sekatan ini wujud.
Pertimbangkan senario berikut:
Dibenarkan:
<code class="cpp">const int size = 2; int array[size] = {0}; // Compilation succeeds</code>
Ralat Kompilasi:
<code class="cpp">int a = 2; const int size = a; int array[size] = {0}; // Compilation fails</code>
Sebab:
Sebab asas sekatan ini berpunca daripada konsep ungkapan malar. Dalam C , ungkapan malar ialah pemalar masa kompilasi yang boleh dinilai semasa penyusunan. Dalam senario pertama, saiz dimulakan dengan pemalar masa kompilasi (iaitu, 2), membenarkan pengkompil menentukan saiz tatasusunan pada masa penyusunan. Maklumat ini penting untuk peruntukan memori.
Walau bagaimanapun, dalam senario kedua, saiz dimulakan dengan nilai a, yang boleh berubah dan oleh itu tidak tetap. Ini bermakna pengkompil tidak boleh menentukan saiz tatasusunan sehingga masa jalan apabila nilai a diketahui. Akibatnya, ia tidak dapat melaksanakan peruntukan memori masa kompilasi untuk tatasusunan, yang membawa kepada ralat penyusunan.
Rasional di sebalik pengehadan ini adalah untuk mengekalkan ketekalan dan kebolehramalan dalam bahasa pengaturcaraan. Membenarkan ungkapan tidak tetap dalam pengisytiharan saiz tatasusunan akan menimbulkan ketidakpastian semasa penyusunan dan berpotensi membawa kepada ralat masa jalan atau tingkah laku yang tidak dapat diramalkan.
Atas ialah kandungan terperinci Mengapakah Saya Tidak Boleh Menggunakan Pembolehubah Bukan Malar untuk Menentukan Saiz Tatasusunan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!