सी में नल की जांच कैसे करें: 7 चरणों (चित्रों के साथ)

विषयसूची:

सी में नल की जांच कैसे करें: 7 चरणों (चित्रों के साथ)
सी में नल की जांच कैसे करें: 7 चरणों (चित्रों के साथ)

वीडियो: सी में नल की जांच कैसे करें: 7 चरणों (चित्रों के साथ)

वीडियो: सी में नल की जांच कैसे करें: 7 चरणों (चित्रों के साथ)
वीडियो: GIMP में आइकन का आकार कैसे बदलें - [GIMP आइकन को बड़ा करें] 2024, मई
Anonim

सी में, एनयूएलएल एक प्रतीकात्मक स्थिरांक है जो हमेशा स्मृति में एक गैर-मौजूद बिंदु को इंगित करता है। हालांकि कई प्रोग्रामर इसे 0 के बराबर मानते हैं, यह एक सरलीकरण है जो आपको बाद में परेशान कर सकता है। अपने पॉइंटर्स को सीधे NULL के विरुद्ध जांचना और अन्य संदर्भों में 0 का उपयोग करना सबसे अच्छा है। यह आपके कोड को साफ और समझने में आसान रखता है, क्योंकि आपको पता चल जाएगा कि हर बार जब आप NULL देखते हैं तो आप पॉइंटर्स के साथ काम कर रहे होते हैं।

कदम

2 का भाग 1: शून्य जांच करना

सी चरण 1 में शून्य की जांच करें
सी चरण 1 में शून्य की जांच करें

चरण 1. मानक नल चेक कोड का प्रयोग करें।

शून्य चेक लिखने का सबसे स्पष्ट तरीका निम्नलिखित है। हम उपयोग करेंगे पीटीआर इस आलेख में उस सूचक के नाम के रूप में जिसे आप जांच रहे हैं।

  • अगर (पीआरटी == न्यूल)

    {

    // कोड अगर पॉइंटर NULL है

    } अन्यथा {

    // कोड अगर NULL नहीं है

    }

सी चरण 2 में शून्य की जांच करें
सी चरण 2 में शून्य की जांच करें

चरण 2. किसी भी मान के लिए परीक्षण करें लेकिन NULL।

कभी-कभी इसके बजाय असमानता का परीक्षण करना अधिक सुविधाजनक होता है। यहां कोई आश्चर्य नहीं:

  • अगर (पीआरटी! = न्यूल) {

    // कोड अगर NULL नहीं है

    }

सी चरण 3 में शून्य की जांच करें
सी चरण 3 में शून्य की जांच करें

चरण 3. त्रुटियों से बचने के लिए पहले NULL लिखें (वैकल्पिक)।

PTR == NULL विधि का मुख्य नुकसान यह है कि आप गलती से ptr = NULL टाइप करेंगे, इसके बजाय उस पॉइंटर को NULL मान निर्दिष्ट करेंगे। इससे बड़ा सिरदर्द हो सकता है। चूंकि (इन) समानता के लिए परीक्षण ऑपरेंड को सममित रूप से मानता है, आप ठीक उसी परिणाम को लिखकर प्राप्त कर सकते हैं अगर (नल == पीटीआर) बजाय। यह अधिक टाइपो-प्रतिरोधी है, क्योंकि एक आकस्मिक NULL = ptr एक साधारण संकलन त्रुटि बनाता है।

यह कुछ प्रोग्रामर के लिए थोड़ा अजीब लगता है, लेकिन यह पूरी तरह मान्य है। आप किस दृष्टिकोण का उपयोग करते हैं, यह व्यक्तिगत वरीयता पर निर्भर करता है, और आपका कंपाइलर if (ptr = NULL) त्रुटि का पता लगाने में कितना अच्छा है।

सी चरण 4 में शून्य की जांच करें
सी चरण 4 में शून्य की जांच करें

चरण 4. परीक्षण करें कि क्या चर सत्य है।

एक सरल अगर (पीआरटी) परीक्षण करता है कि क्या ptr TRUE है। यह FALSE लौटाएगा यदि ptr NULL है, या यदि ptr 0 है। भेद कई मामलों में मायने नहीं रखता है, लेकिन ध्यान रखें कि ये सभी आर्किटेक्चर में समान नहीं हैं।

इसका उल्टा है अगर (! पीआरटी), जो TRUE लौटाएगा यदि ptr गलत है।

भाग २ का २: गलतियों से बचना

सी चरण 5 में शून्य की जांच करें
सी चरण 5 में शून्य की जांच करें

चरण 1. NULL की जाँच करने से पहले एक पॉइंटर सेट करें।

एक सामान्य गलती यह मान लेना है कि नए बनाए गए पॉइंटर का NULL मान है। यह सच नहीं है। एक असाइन नहीं किया गया पॉइंटर अभी भी एक मेमोरी एड्रेस को इंगित करता है, सिर्फ एक नहीं जिसे आपने निर्दिष्ट किया है। यह सुनिश्चित करने के लिए कि आप दुर्घटना से इस अनुपयोगी पते का उपयोग नहीं करते हैं, नए बनाए गए या नए मुक्त किए गए पॉइंटर्स को NULL पर सेट करना आम बात है।

  • इस गलती से बचें:

    चार * पीटीआर;

    अगर (पीआरटी == न्यूल)

    {

    // यह FALSE लौटाएगा। सूचक को एक मान्य मान दिया गया है।

    }

  • इसके बजाय लिखें:

    चार * पीआरटी = न्यूल; // यह पॉइंटर को NULL. को असाइन करता है

    अगर (पीआरटी == न्यूल)

    {

    // यदि पॉइंटर को फिर से असाइन नहीं किया गया है तो यह TRUE लौटाएगा।

    }

सी चरण 6 में शून्य की जांच करें
सी चरण 6 में शून्य की जांच करें

चरण 2. उन कार्यों पर ध्यान दें जो NULL लौटा सकते हैं।

यदि कोई फ़ंक्शन NULL लौटा सकता है, तो इस बारे में सोचें कि क्या यह एक संभावना है, और क्या इससे आपके कोड में बाद में समस्या होगी। नल चेक का उपयोग करके मॉलोक फ़ंक्शन का एक उदाहरण यहां दिया गया है (अगर (पीआरटी)) यह सुनिश्चित करने के लिए कि यह केवल मान्य मानों वाले पॉइंटर्स को संभालता है:

  • int *ptr = malloc (एन * आकार (int));

    अगर (पीआरटी) {

    इंट आई;

    के लिए (i = 0; मैं <एन; ++i)

    पीटीआर = मैं;

    }

सी चरण 7 में नल की जाँच करें
सी चरण 7 में नल की जाँच करें

चरण 3. समझें कि न्यूल 0 है लेकिन स्पष्टता के लिए पॉइंटर्स के साथ काम करते समय आपको हमेशा 0 के बजाय न्यूल का उपयोग करना चाहिए।

ऐतिहासिक रूप से, C ने NULL को संख्या 0 (अर्थात, 0x00) के रूप में दर्शाया। आजकल यह थोड़ा और जटिल हो सकता है, और ऑपरेटिंग सिस्टम के अनुसार बदलता रहता है। आप आमतौर पर NULL का उपयोग करके जांच कर सकते हैं पीटीआर == 0, लेकिन ऐसे कोने के मामले हैं जहां यह समस्या पैदा कर सकता है। शायद अधिक महत्वपूर्ण बात यह है कि NULL का उपयोग करने से यह स्पष्ट हो जाता है कि आप अपना कोड पढ़ने वाले अन्य लोगों के लिए पॉइंटर्स के साथ काम कर रहे हैं।

टिप्स

आप इस चेक का उपयोग किसी अन्य की तरह लूप के दौरान कर सकते हैं: जबकि (नल == पीटीआर) {

सिफारिश की: