Mengapakah GCC membenarkan tatasusunan bersaiz berubah-ubah dalam C ?

Mary-Kate Olsen
Lepaskan: 2024-11-01 09:26:30
asal
531 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!