Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में झूलना, शून्य, अशक्त और जंगली संकेत

डैंगलिंग पॉइंटर

डैंगलिंग पॉइंटर एक मेमोरी लोकेशन की ओर इशारा करने वाला एक पॉइंटर है जिसे मुक्त (या हटा दिया गया) कर दिया गया है। ऐसे कई तरीके हैं जहां पॉइंटर लटकने वाले सूचक के रूप में कार्य करता है

फ़ंक्शन कॉल

जब स्थानीय चर स्थिर नहीं होता है तो स्थानीय चर की ओर इशारा करने वाला सूचक लटक जाता है।

int *show(void) {
   int n = 76; /* ... */ return &n;
}

आउटपुट

Output of this program will be garbage address.

स्मृति का आवंटन रद्द करना

int main() {
   float *p = (float *)malloc(sizeof(float));
   //dynamic memory allocation.
   free(p);
   //after calling free()
   p becomes a dangling pointer p = NULL;
   //now p no more a dangling pointer.
}

वेरिएबल का दायरा खत्म हो गया है

int main() {
   int *p //some code// {
      int c; p=&c;
   }
   //some code//
   //p is dangling pointer here.
}

शून्य सूचक

शून्य सूचक एक सूचक है जो किसी भी डेटा प्रकार से संबद्ध नहीं है। यह स्टोरेज में कुछ डेटा लोकेशन की ओर इशारा करता है यानी वेरिएबल्स के एड्रेस की ओर इशारा करता है। इसे सामान्य प्रयोजन सूचक भी कहा जाता है।

इसकी कुछ सीमाएँ हैं

  • सूचक अंकगणित अपने ठोस आकार के कारण शून्य सूचक का संभव नहीं है।
  • इसे संदर्भित के रूप में उपयोग नहीं किया जा सकता है।

उदाहरण

#include<stdlib.h>
#include<iostream>
using namespace std;
int main() {
   int a = 7;
   float b = 7.6;
   void *p;
   p = &a;
   cout<<*( (int*) p)<<endl ;
   p = &b;
   cout<< *( (float*) p) ;
   return 0;
}

आउटपुट

7
7.600000

एल्गोरिदम

Begin
   Initialize a variable a with integer value and variable b with float value.
   Declare a void pointer p.
   (int*)p = type casting of void.
   p = &b mean void pointer p is now float.
   (float*)p = type casting of void.
   Print the value.
End.

नल पॉइंटर

नल पॉइंटर एक पॉइंटर होता है जो कुछ भी नहीं इंगित करता है।

नल पॉइंटर के कुछ उपयोग हैं

  • एक पॉइंटर वैरिएबल को इनिशियलाइज़ करने के लिए जब उस पॉइंटर वैरिएबल को अभी तक कोई मान्य मेमोरी एड्रेस असाइन नहीं किया गया है।

  • यदि हम कोई मान्य मेमोरी एड्रेस पास नहीं करना चाहते हैं, तो फ़ंक्शन तर्क के लिए एक नल पॉइंटर पास करने के लिए।

  • किसी भी पॉइंटर वेरिएबल को एक्सेस करने से पहले नल पॉइंटर की जांच करने के लिए। ताकि, हम पॉइंटर से संबंधित कोड में एरर हैंडलिंग कर सकें। डीरेफरेंस पॉइंटर वेरिएबल तभी होता है जब वह NULL न हो।

उदाहरण

#include <iostream>
using namespace std;
int main() {
   int *p= NULL; //initialize the pointer as null.
   cout<<"The value of pointer is ";
   cout<<p;
   return 0;
}

आउटपुट

The value of pointer is 0.

जंगली सूचक

वाइल्ड पॉइंटर्स ऐसे पॉइंटर्स होते हैं जो कुछ मनमानी मेमोरी लोकेशन की ओर इशारा करते हैं। (न्यूल भी नहीं)

int main() {
   int *ptr; //wild pointer
   *ptr = 5;
}

  1. C++ में प्रत्येक नोड II में नेक्स्ट राइट पॉइंटर्स को पॉप्युलेट करना

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है, जहां प्रत्येक नोड में निम्नलिखित फ़ील्ड हैं:(डेटा, लेफ्ट, राइट, नेक्स्ट), लेफ्ट लेफ्ट सबट्री को इंगित करेगा, राइट सबट्री को इंगित करेगा, और अगला पॉइंटर अगले नोड को इंगित करेगा। यदि दाहिने हाथ में कोई नोड नहीं है, तो वह शून्य होगा। तो शुरू में प्रत्येक अगला स

  1. सी ++ में प्रत्येक नोड में अगला दायां पॉइंटर्स पॉप्युलेट करना

    मान लीजिए कि हमारे पास एक पूर्ण बाइनरी ट्री है, जहां प्रत्येक नोड में निम्नलिखित फ़ील्ड हैं:(डेटा, लेफ्ट, राइट, नेक्स्ट), लेफ्ट लेफ्ट सबट्री को इंगित करेगा, राइट सबट्री को इंगित करेगा, और अगला पॉइंटर अगले नोड को इंगित करेगा। . यदि दाहिने हाथ में कोई नोड नहीं है, तो वह शून्य होगा। तो शुरू में प्रत्ये

  1. स्मार्ट पॉइंटर क्या है और मुझे इसे C++ में कब इस्तेमाल करना चाहिए?

    एक स्मार्ट पॉइंटर एक ऐसा वर्ग है जो कच्चे (या नंगे) सी ++ पॉइंटर को लपेटता है। इसका उपयोग पॉइंटर द्वारा इंगित संसाधनों को प्रबंधित करने के लिए किया जाता है। उदाहरण के लिए, यदि उस स्मृति स्थान का संदर्भ खो जाता है। यह एक तरह से कचरा संग्रहकर्ता की तरह काम करता है। कई स्मार्ट पॉइंटर प्रकार हैं। आप