Soalan: Memahami Saiz "void" yang Tidak Ditakrifkan
Dalam pengaturcaraan C, kata kunci "void" mewakili ketiadaan jenis. Ini menimbulkan persoalan: apakah saiz "kosong"?
Jawapan:
Jenis "kosong" tidak mempunyai saiz yang ditentukan dalam C. Ia bukan jenis yang sah untuk objek atau penunjuk, jadi cuba menggunakannya seperti itu akan membawa kepada ralat penyusunan. Khususnya, pernyataan:
void n;
tidak sah kerana ia cuba mengisytiharkan pembolehubah jenis kekosongan, yang tidak dibenarkan.
Pelanjutan: Peruntukan dan Aritmetik Penunjuk dengan " void" Pointer
Walaupun "void" tidak mempunyai saiz, ia boleh digunakan sebagai jenis untuk petunjuk. Walau bagaimanapun, penunjuk sedemikian tidak menunjuk kepada mana-mana jenis atau saiz data tertentu.
Pernyataan:
void *p = malloc(sizeof(void));
menghasilkan ralat masa kompilasi kerana cuba memperuntukkan memori untuk "kosong "jenis mengarut. Fungsi malloc memerlukan jenis data yang sah untuk memperuntukkan memori.
Dalam GCC, ungkapan sizeof(void) secara mengejutkan menilai kepada 1. Walaupun ini mungkin kelihatan seperti ia memberikan saiz kepada "kosong", ia hanyalah perincian pelaksanaan yang tidak boleh dipercayai.
Selain itu, aritmetik penunjuk p pada penuding "kosong" ialah tidak ditentukan dan tidak boleh digunakan. Ini kerana jenis data yang ditunjuk oleh p tidak diketahui, menjadikannya mustahil untuk menentukan maksud kenaikan penunjuk.
Atas ialah kandungan terperinci Apakah Saiz \'kosong\' dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!