Rumah > pembangunan bahagian belakang > C++ > 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
Lepaskan: 2024-10-28 09:44:02
asal
361 orang telah melayarinya

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>
    Salin selepas log masuk
  2. Ralat Kompilasi:

    <code class="cpp">int a = 2;
    const int size = a;
    int array[size] = {0}; // Compilation fails</code>
    Salin selepas log masuk

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!

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