सी में, void
कई असंबंधित चीजों के लिए उपयोग किया जाता है। यह किसके लिए उपयोग किया जाता है, इसके आधार पर, इसका अर्थ एक इकाई प्रकार, एक खाली प्रकार, या कुछ और हो सकता है।
जब void
स्वयं द्वारा उपयोग किया जाता है (जैसा कि विरोध करने के लिए void*
, शून्य करने के लिए एक सूचक), यह एक इकाई प्रकार है, अर्थात एकल मान वाला एक प्रकार। वापसी करने वाले फ़ंक्शंस void
को "कुछ भी नहीं लौटाना" कहा जाता है, लेकिन इसका वास्तव में मतलब यह है कि वे किसी भी जानकारी को वापस नहीं करते हैं। वे जानकारी के बिट्स लौटाते हैं, जिसका अर्थ है कि वे एक प्रकार का मान लौटाते हैं जिसमें 2 0 = 1 अलग-अलग मान होते हैं, अर्थात एक इकाई प्रकार।020= 1
यह एक खाली प्रकार नहीं है: एक फ़ंक्शन जो खाली प्रकार लौटाता है, वह मान वापस नहीं कर सकता है, क्योंकि उस प्रकार का कोई मूल्य नहीं है। एक फ़ंक्शन जिसका रिटर्न प्रकार खाली है, केवल हमेशा के लिए लूप कर सकता है, या प्रोग्राम को रद्द कर सकता है, या एक अपवाद बढ़ा सकता है ( longjmp
) (या अन्यथा वापस लौटने की व्यवस्था नहीं करता है, उदाहरण के लिए नियंत्रण को दूसरे थ्रेड में स्थानांतरित करके या मानक सी से परे कार्यक्षमता का उपयोग करके प्रक्रिया)। चीजों को भ्रामक रखने के लिए, C void
में एक खाली प्रकार के बदले में उपयोग करना पारंपरिक है (C में खाली प्रकार नहीं है)।
void
प्रकार की आवश्यकता है भंडारण के टुकड़े। चूँकि C, भंडारण के बाइट्स की पूरी, गैर-संख्या पर कब्जा करने वाली प्रत्येक वस्तु पर जोर देता है, इसलिए इसे प्रकार की एक वस्तु बनाने के लिए मना किया जाता है , और मूल्य को वापस करने के लिए एक विशेष वाक्यविन्यास होता है (मान के साथ एक कथन छोड़ा गया)। ऐसा कोई सिंटैक्स नहीं है जो प्रकार का मान देता है , लेकिन जब भी कोई फ़ंक्शन जिसका रिटर्न प्रकार रिटर्न होता है, तो वह मान होता है ।0void
void
return
void
void
C में किसी भी प्रकार की अनुमति देने के अर्थ में निचला प्रकार नहीं है। यहां तक कि अपूर्ण प्रकार इसके मूल्यों की सामान्य प्रकृति को निर्दिष्ट करते हैं, जैसे संकेत या संरचना या यूनियन या फ़ंक्शन। लेकिन void*
किसी भी गैर-फ़ंक्शन प्रकार के लिए एक संकेतक है: यह ऑब्जेक्ट पॉइंटर प्रकारों के बीजगणित का सबसे कम तत्व है, अर्थात यह नीचे का ऑब्जेक्ट पॉइंटर प्रकार है। के सामान्य मामले के विपरीत T*
, जहां T
कुछ गैर शून्य प्रकार है, void*
प्रकार का एक मूल्य के लिए संकेत के प्रकार नहीं है void
, लेकिन अनिर्दिष्ट प्रकार के एक मूल्य के लिए संकेत के प्रकार के।