Dalam C, void
digunakan untuk banyak hal yang tidak terkait. Bergantung pada apa yang digunakan untuk itu, artinya mungkin tipe unit, tipe kosong, atau sesuatu yang lain.
Ketika void
digunakan dengan sendirinya (sebagai lawan dari void*
, pointer ke void), itu adalah tipe unit, yaitu tipe dengan nilai tunggal. Fungsi yang mengembalikan void
dikatakan “tidak menghasilkan apa-apa”, tetapi yang sebenarnya berarti adalah bahwa mereka tidak mengembalikan informasi apa pun. Mereka mengembalikan bit informasi, yang berarti bahwa mereka mengembalikan nilai dari tipe yang mengandung 2 0 = 1 nilai yang berbeda, yaitu tipe unit.020= 1
Ini bukan tipe kosong: fungsi yang mengembalikan tipe kosong tidak dapat mengembalikan nilai, karena tidak ada nilai tipe itu. Fungsi yang tipe pengembaliannya kosong hanya dapat diulang selamanya, atau dibatalkan programnya, atau menimbulkan pengecualian ( longjmp
) (atau mengatur agar tidak kembali, misalnya dengan mentransfer kontrol ke utas lain atau proses menggunakan fungsionalitas di luar standar C). Untuk membuat hal-hal membingungkan, itu konvensional dalam C untuk digunakan void
sebagai pengganti tipe kosong (C tidak memiliki tipe kosong).
The void
Tipe membutuhkan bit penyimpanan. Karena C bersikeras pada setiap objek yang menempati keseluruhan, jumlah byte penyimpanan yang tidak nol, dilarang membuat objek bertipe , dan ada sintaks khusus untuk mengembalikan nilai ( pernyataan dengan nilai yang dihilangkan). Tidak ada sintaks yang menghasilkan nilai tipe , tetapi nilai itu ada setiap kali fungsi yang tipe pengembaliannya dikembalikan.0void
void
return
void
void
C tidak memiliki tipe dasar dalam arti memungkinkan tipe apa pun yang mungkin. Bahkan tipe yang tidak lengkap menentukan sifat umum dari nilai-nilainya, misalnya pointer atau struct atau serikat atau fungsi. Tetapi void*
adalah pointer ke semua jenis non-fungsi: itu adalah elemen paling sedikit dari aljabar jenis pointer objek, yaitu itu adalah tipe pointer objek bawah. Berbeda dengan kasus umum di T*
mana T
ada beberapa tipe non-void, void*
bukan tipe pointer ke nilai tipe void
, tetapi tipe pointer ke nilai tipe yang tidak ditentukan.