Peruntukan Tatasusunan Dinamik dalam C dengan Saiz Tatasusunan Bolehubah
Tatasusunan bersaiz pembolehubah, juga dikenali sebagai tatasusunan dinamik, menimbulkan cabaran dalam standard C . Pertimbangkan program berikut:
int siz = 0;
int n = 0;
FILE* gambar;
gambar = fopen("test.jpg", "r");
fseek(gambar, 0, SEEK_END );
saiz = ftell(gambar);
char Sbuf[siz];
fseek(gambar, 0, SEEK_SET); //Melangkah ke permulaan fail
sementara (!feof(gambar)) {
n = fread(Sbuf, sizeof(char), siz, picture); /* ... do stuff with the buffer ... */ /* memset(Sbuf, 0, sizeof(Sbuf)); */
}
Kod di atas cuba untuk memperuntukkan tatasusunan aksara dengan saiz yang ditentukan oleh saiz pembolehubah. Walau bagaimanapun, dalam standard C, saiz tatasusunan mestilah pemalar. Ini menimbulkan persoalan: bagaimana kita boleh mengisytiharkan siz dengan betul untuk membenarkan penyusunan kod?
Malangnya, tiada kaedah langsung untuk mengisytiharkan tatasusunan dengan saiz berubah dalam standard C. Walau bagaimanapun, beberapa alternatif wujud:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengisytiharkan Tatasusunan Dengan Saiz Pembolehubah dalam Standard C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!