शून्य पॉइंटर्स को समझना: सी और सी के बीच अंतर
शून्य पॉइंटर्स सी और सी दोनों का एक प्रमुख पहलू हैं, लेकिन उल्लेखनीय अंतर हैं उनके संचालन में. यह लेख इन अंतरों की पड़ताल करता है और बताता है कि प्रतीत होता है कि विरोधाभासी व्यवहार क्यों हो सकते हैं। int
) और एक शून्य सूचक (void) हमेशा अंतर्निहित होते हैं। इसका मतलब है कि निम्नलिखित कथन मान्य है:
int* p = Malloc(sizeof(int));मॉलोक फ़ंक्शन एक शून्य* लौटाता है, जिसे बाद में असाइन किया जाता है int* सूचक. हालाँकि, C में, ऐसे अंतर्निहित रूपांतरणों की अनुमति नहीं है। एक शून्य सूचक से एक विशिष्ट प्रकार में परिवर्तित करने के लिए एक स्पष्ट कास्ट की आवश्यकता होती है। यह बताता है कि निम्नलिखित कोड C और C दोनों में संकलित क्यों होता है:
int* p = malloc(sizeof(int));
मॉलोक फ़ंक्शन एक शून्य* लौटाता है, जो फू फ़ंक्शन को पास कर दिया जाता है। भले ही int* पॉइंटर को void* पैरामीटर को सौंपा गया है, C इस अंतर्निहित रूपांतरण की अनुमति देता है। हालाँकि, p पर बाद की कॉल के लिए int* प्रकार के लिए एक स्पष्ट कास्ट की आवश्यकता होती है। सूचना हानि के बिना सुरक्षित रूप से शून्य* में परिवर्तित किया जाए। इसके अलावा, मूल सूचक प्रकार में वापस कनवर्ट करने से मूल मान पुनर्स्थापित हो जाता है। C में, मानक निर्दिष्ट करता है कि किसी भी सूचक प्रकार से void* तक अंतर्निहित रूपांतरण की अनुमति है, लेकिन void* से किसी अन्य प्रकार में रूपांतरण के लिए स्पष्ट कास्टिंग आवश्यक है।निष्कर्ष
सी और सी शून्य पॉइंटर हैंडलिंग के बीच मुख्य अंतर शून्य * से सी में एक विशिष्ट प्रकार में परिवर्तित होने पर स्पष्ट कास्टिंग की आवश्यकता में निहित है। यह सख्त दृष्टिकोण अपरिभाषित व्यवहार को रोकने में मदद करता है और सी कोड में प्रकार की सुरक्षा बनाए रखता है।अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3