Pengisytiharan Saiz Tatasusunan Pembolehubah dalam C
Dalam C , saiz tatasusunan biasanya dijangkakan sebagai nilai integer malar. Walau bagaimanapun, persoalan timbul sama ada boleh mengisytiharkan tatasusunan dengan pembolehubah bukan malar sebagai saiznya.
Seperti yang diserlahkan oleh Bjarne Stroustrup dalam Bahasa Pengaturcaraan C, "terikat tatasusunan, mestilah ungkapan malar." Akibatnya, kod di bawah dianggap tidak betul:
<code class="cpp">int ArraySize = 5; int MyArray[ArraySize]; // incorrect</code>
Walau bagaimanapun, yang menghairankan, pada sesetengah sistem seperti GCC v4.4.0, kod tersebut berjaya disusun:
<code class="cpp">void f(int i) { int v2[i]; } int main() { int i = 3; int v1[i]; f(5); }</code>
Tingkah laku yang tidak dijangka ini adalah disebabkan oleh sambungan GCC kepada standard. Secara lalai, GCC membenarkan penggunaan pembolehubah tidak tetap sebagai saiz tatasusunan. Walau bagaimanapun, ini mungkin bukan ciri yang disokong merentas semua pengkompil atau platform.
Jika mudah alih adalah keperluan, sangat disyorkan untuk menggunakan pilihan -pedantic dengan GCC untuk mendayakan amaran untuk sambungan ini atau gunakan -std=c 98 untuk menimbulkan ralat. Dengan mematuhi standard, kod akan menjadi lebih dipercayai dan serasi merentas platform.
Atas ialah kandungan terperinci Bolehkah Anda Mengisytiharkan Tatasusunan dengan Saiz Pembolehubah dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!