Rumah >pembangunan bahagian belakang >C++ >Bolehkah Anda Menggunakan Pembolehubah Bukan Malar untuk Mengisytiharkan Saiz Tatasusunan dalam C?

Bolehkah Anda Menggunakan Pembolehubah Bukan Malar untuk Mengisytiharkan Saiz Tatasusunan dalam C?

Linda Hamilton
Linda Hamiltonasal
2024-11-02 11:56:31958semak imbas

Can You Use Non-Constant Variables to Declare Array Sizes in C  ?

Pengisytiharan Saiz Tatasusunan dengan Pembolehubah Tidak Dimalarkan

Bertentangan dengan tanggapan yang diterima secara meluas bahawa saiz tatasusunan dalam C mestilah integer tetap, pemerhatian terkini telah mendedahkan bahawa sesetengah penyusun membenarkan fleksibiliti yang lebih besar dalam hal ini. Walaupun piawaian C menyatakan bahawa sempadan tatasusunan mestilah ungkapan malar, GCC memperkenalkan pelanjutan yang membolehkan penggunaan pembolehubah bukan pemalar dalam pengisytiharan saiz tatasusunan.

Pertimbangkan contoh berikut:

<code class="c++">int ArraySize = 5;
int MyArray[ArraySize];</code>

Dalam standard C , kod ini akan menghasilkan ralat pengkompil kerana ArraySize bukan pemalar. Walau bagaimanapun, GCC dengan senang hati menyusunnya tanpa sebarang isu.

Untuk memahami tingkah laku ini, adalah penting untuk mengakui bahawa sambungan GCC adalah penyelewengan daripada piawaian C. Petikan daripada "Bahasa Pengaturcaraan C" oleh Bjarne Stroustrup dengan jelas menyatakan bahawa sempadan tatasusunan mestilah ungkapan tetap.

Walaupun begitu, sambungan GCC menyediakan cara yang mudah untuk memperuntukkan tatasusunan secara dinamik pada masa jalan. Seseorang boleh berhujah bahawa fleksibiliti ini datang dengan kos mudah alih, kerana kod yang bergantung pada sambungan GCC mungkin tidak dihimpun pada penyusun C yang mematuhi yang lain.

Jika mudah alih menjadi kebimbangan, GCC menawarkan pilihan untuk menguatkuasakan pematuhan standard. Melepasi bendera -pedantic semasa kompilasi menghasilkan amaran untuk pengisytiharan saiz tatasusunan tidak tetap, dan -std=c 98 menganggapnya sebagai ralat. Pilihan ini mengutamakan pematuhan ketat kepada standard C berbanding kemudahan masa jalan.

Atas ialah kandungan terperinci Bolehkah Anda Menggunakan Pembolehubah Bukan Malar untuk Mengisytiharkan 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