"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > NULL बनाम NullPtr: C ++ NULL पॉइंटर को क्यों बदल दिया गया?

NULL बनाम NullPtr: C ++ NULL पॉइंटर को क्यों बदल दिया गया?

2025-02-26 को पोस्ट किया गया
ब्राउज़ करें:611

NULL vs. nullptr: Why Was the C   Null Pointer Replaced?

0x, पारंपरिक अशक्त की जगह। इस प्रतिस्थापन ने जिज्ञासा को उकसाया, इस प्रश्न को प्रेरित किया: यह परिवर्तन क्यों लागू किया गया था? सी-स्टाइल 'मैक्रो' और पॉइंटर प्रकारों के लिए एक वैध शाब्दिक मूल्य दोनों के रूप में। इस अस्पष्टता से भ्रम हो सकता है, विशेष रूप से ओवरलोडेड फ़ंक्शन कॉल में। निम्नलिखित उदाहरण पर विचार करें:

शून्य f (int); शून्य f (foo *); एफ (नल); // अस्पष्ट, या तो कॉल किया जा सकता है

nullptr की शुरूआत के साथ, इस अस्पष्टता को हल किया गया था। NullPtr एक समर्पित प्रकार (std :: nullptr_t) है जो स्पष्ट रूप से एक अशक्त सूचक को दर्शाता है। यह स्पष्ट रूप से किसी भी पॉइंटर प्रकार के लिए परिवर्तनीय है, जो अस्पष्ट अधिभार संकल्प को सुनिश्चित करता है। NullPTR के साथ NULL की जगह इस मुद्दे को समाप्त कर दिया, जो पॉइंटर मानों और पूर्णांक के बीच एक स्पष्ट अंतर प्रदान करता है। महत्वपूर्ण लाभ:

बेहतर प्रकार सुरक्षा:

जैसा कि पहले उल्लेख किया गया है, nullptr का स्पष्ट प्रकार पूर्णांक के लिए अनजाने रूपांतरणों को रोकता है।
void f(int);
void f(foo *);

f(NULL); // Ambiguous, could be either call

बढ़ाया कोड पठनीयता ।

सुसंगत वाक्य पॉइंटर-संबंधित प्रकारों और मूल्यों के लिए एक प्रत्यय के रूप में 'पी' का उपयोग करने के लिए सी स्टैंडर्ड लाइब्रेरी के कन्वेंशन के अनुरूप है, जैसे कि इटरेटर और स्मार्ट पॉइंटर प्रकार।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3