Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah Saya Tidak Boleh Menggunakan Pembolehubah Bukan Malar untuk Menentukan Saiz Tatasusunan dalam C ?

Mengapakah Saya Tidak Boleh Menggunakan Pembolehubah Bukan Malar untuk Menentukan Saiz Tatasusunan dalam C ?

Barbara Streisand
Barbara Streisandasal
2024-10-28 09:44:02262semak imbas

Why Can't I Use a Non-Constant Variable to Define an Array Size in C  ?

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:

  1. Dibenarkan:

    <code class="cpp">const int size = 2;
    int array[size] = {0}; // Compilation succeeds</code>
  2. 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!

Kenyataan:
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