Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah GCC membenarkan tatasusunan bersaiz berubah-ubah dalam C ?

Mengapakah GCC membenarkan tatasusunan bersaiz berubah-ubah dalam C ?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-01 09:26:30532semak imbas

Why does GCC allow variable-sized arrays in C  ?

Tasusunan Bersaiz Boleh Ubah dalam C : Menyusun dengan Pelanjutan GCC

C biasanya memerlukan saiz tatasusunan menjadi integer tetap. Walau bagaimanapun, GCC menyediakan sambungan yang membenarkan penggunaan pembolehubah bukan pemalar untuk mengisytiharkan saiz tatasusunan.

Soalan:

Mengapa kod berikut berjaya disusun dengan GCC ?

<code class="cpp">void f(int i) {
    int v1[i];
}

int main() {
    int i = 3;
    int v2[i];
    f(5);
}</code>

Jawapan:

Tingkah laku ini adalah lanjutan kepada standard C yang diperkenalkan oleh GCC. Secara lalai, GCC membenarkan anda menggunakan pembolehubah bukan pemalar untuk menentukan saiz tatasusunan.

Walau bagaimanapun, terdapat kaveat penting untuk diambil perhatian:

  • Kebimbangan Mudah Alih: Sambungan ini bukan sebahagian daripada standard C, jadi kod anda mungkin tidak dikompil dengan pengkompil C lain.
  • Amaran Berkemungkinan: Anda boleh mendayakan pilihan -pedantic untuk GCC mengeluarkan amaran apabila menggunakan sambungan ini.
  • Ralat dalam Mod Ketat: Tetapan -std=c 98 akan menyebabkan GCC menganggap penggunaan saiz tatasusunan bukan malar sebagai ralat.

Menggunakan Sambungan:

Untuk menggunakan sambungan ini, hanya isytiharkan tatasusunan anda dengan pembolehubah bukan pemalar sebagai saiznya:

<code class="cpp">int arraySize = 5;
int myArray[arraySize];</code>

Mengatasi Kemudahalihan Kebimbangan:

Jika mudah alih menjadi kebimbangan, anda boleh menggunakan bekas vektor std:: bukannya tatasusunan dengan saiz berubah:

<code class="cpp">std::vector<int> myVector(arraySize);</code>

Dengan menggunakan sambungan ini, anda memperoleh lebih banyak fleksibiliti dalam mengurus saiz tatasusunan dalam situasi dinamik. Walau bagaimanapun, adalah penting untuk mengetahui batasannya dan mempertimbangkan implikasi mudah alihnya apabila menggunakannya dalam projek anda.

Atas ialah kandungan terperinci Mengapakah GCC membenarkan tatasusunan bersaiz berubah-ubah 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