प्रश्न: गंभीरता से, किसी भी वास्तविक मशीनों वास्तव में अलग प्रकार के संकेत दिए गए के लिए अशून्य अशक्त संकेत दिए गए हैं या फिर विभिन्न अभ्यावेदन का इस्तेमाल किया है?
ए: प्राइम 50 श्रृंखला ने खंड 07777 का उपयोग किया, कम से कम पीएल/आई के लिए शून्य पॉइंटर के लिए ऑफसेट 0। बाद के मॉडल ने सी के लिएके लिए ऑफसेट 0 का उपयोग किया, टीसीएनपी (टेस्ट सी नल पॉइंटर) जैसे नए निर्देशों की जरुरत है, स्पष्ट रूप से [फुटनोट] के लिए एक एसओपी के रूप में सभी मौजूदा खराब लिखित सी कोड जो गलत धारणाएं बनाते हैं । पुराना, शब्द-संबोधित प्राइम मशीन भी शब्द पॉइंटर्स (int *) से बड़े बाइट पॉइंटर्स (char *) की आवश्यकता के लिए कुख्यात थे। चार * और शून्य *, और शब्द के लिए बाइट संकेत:
डाटा जनरल से The Eclipse एमवी श्रृंखला तीन वास्तुकला समर्थित सूचक प्रारूपों (शब्द, बाइट, और बिट संकेत), जिनमें से दो सी compilers द्वारा उपयोग किया जाता है बाकी सब कुछ के लिए पॉइंटर्स। के दौरान ऐतिहासिक कारणों के लिए 16-बिट नोवा लाइन से 32-बिट एमवी लाइन के विकास के लिए, शब्द पॉइंटर्स और बाइट पॉइंटर्स के पास ऑफ़सेट, संकेत, और अंगूठी शब्द में विभिन्न स्थानों में सुरक्षा बिट्स था। किसी फ़ंक्शन में एक विसंगित सूचक प्रारूप को पास करने से सुरक्षा त्रुटियां हुईं। आखिरकार, एमवी सी कंपाइलर ने को पॉइंटर प्रकार की मिस्चैच त्रुटियों वाले कोड से निपटने के लिए कई संगतता विकल्प जोड़े।
कुछ हनीवेल-बुल मेनफ्रेम (आंतरिक) शून्य पॉइंटर्स के लिए बिट पैटर्न 06000 का उपयोग करते हैं।
सीडीसी साइबर 180 सीरीज़ में 48-बिट पॉइंटर्स हैं जिनमें एक अंगूठी, सेगमेंट और ऑफसेट शामिल है। अधिकांश उपयोगकर्ता (अंगूठी 11 में) 0xB00000000000 के शून्य पॉइंटर्स हैं। पुरानी सीडीसी-पूरक मशीनों पर यह पर आम था, अमान्य पते सहित सभी प्रकार के डेटा, के लिए एक विशेष ध्वज के रूप में एक-एक-बिट शब्द का उपयोग करें।
पुरानी एचपी 3000 श्रृंखला शब्द पते के मुकाबले बाइट पते के लिए एक अलग एड्रेसिंग योजना का उपयोग करती है; से ऊपर की कई मशीनों की तरह यह इसलिए अन्य पॉइंटर्स के मुकाबले char * और शून्य * पॉइंटर्स के लिए अलग-अलग प्रस्तुतियों का उपयोग करता है।
सिंबलिक्स लिस्प मशीन, एक टैग की गई वास्तुकला में, पारंपरिक संख्यात्मक पॉइंटर्स भी नहीं है; यह एक सी नल सूचक के रूप में जोड़ी (मूल रूप से nonexistent हैंडल) का उपयोग करता है।
`` स्मृति मॉडल 'के आधार पर' प्रयोग में, 8086-परिवारिक प्रोसेसर (पीसी compatibles) 16-बिट डेटा संकेत दिए गए और 32-बिट समारोह संकेत दिए गए, या इसके विपरीत का उपयोग कर सकते हैं।
कुछ 64-बिट क्रे मशीनें शब्द के निचले 48 बिट्स में int * का प्रतिनिधित्व करती हैं; char * अतिरिक्त रूप से एक शब्द के भीतर बाइट पता इंगित करने के लिए ऊपरी 16 बिट्स का उपयोग करता है।
'NULL' किसी पते पर विस्तार नहीं करता है। क्या आप सचमुच पूछ रहे हैं कि 'नल' मैक्रो को किसी और चीज के लिए परिभाषित किया गया था, या क्या आप पूछना चाहते हैं कि शून्य सूचक के अंतर्निहित प्रतिनिधित्व कब-बिट-शून्य नहीं हैं? – jamesdlin
आखिरी मैंने देखा, यह या तो ((शून्य *) (3 एल - 2 एल - 1 एल)), (((((0) * 0x55))), या ('\ 0') तक विस्तारित हो सकता है। (सी में है। इनमें से कुछ को सी ++ में अनुमति नहीं दी जाएगी।) –
आपके द्वारा स्वीकार किए गए उत्तर से आपके प्रश्न का उत्तर नहीं दिया गया है। या तो प्रश्न को सही करें (यदि वह नहीं है जिसे आप पूछना चाहते हैं), या किसी अन्य उत्तर को फिर से स्वीकार करें। विवरण टिप्पणियों में हैं। – AnT