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

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

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

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

फ़ंक्शन कॉल

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

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

आउटपुट

Output of this program will be garbage address.

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

#include <stdlib.h> #include <stdio.h> 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>
int main() {
   int a = 7;
   float b = 7.6;
   void *p;
   p = &a;
      printf("Integer variable is = %d", *( (int*) p) );
   p = &b;
   printf("\nFloat variable is = %f", *( (float*) p) );
   return 0;
}

आउटपुट

Integer variable is = 7
Float variable is = 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>
#include <stdio.h>
int main() {
   int *p= NULL;//initialize the pointer as null.
   printf("The value of pointer is %u",p);
   return 0;
}

आउटपुट

The value of pointer is 0.

जंगली सूचक

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

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

  1. मॉलोक () और फ्री () सी/सी ++ में कैसे काम करते हैं?

    मॉलोक () फ़ंक्शन malloc () का उपयोग बाइट्स के अनुरोधित आकार को आवंटित करने के लिए किया जाता है और यह आवंटित मेमोरी के पहले बाइट के लिए एक पॉइंटर देता है। विफल होने पर यह शून्य सूचक लौटाता है। यहाँ C भाषा में malloc() का सिंटैक्स दिया गया है, pointer_name = (cast-type*) malloc(size); यहाँ, poin

  1. सी/सी++ में isalpha() और isdigit()

    isalpha() फ़ंक्शन isalpha () का उपयोग यह जांचने के लिए किया जाता है कि कोई वर्ण वर्णमाला है या नहीं। यह फ़ंक्शन ctype.h हेडर फ़ाइल में घोषित किया गया है। यह एक पूर्णांक मान देता है, यदि तर्क एक वर्णमाला है अन्यथा, यह शून्य देता है। यहाँ C भाषा में isalpha() का सिंटैक्स दिया गया है, int isalpha(int

  1. सी/सी++ पॉइंटर्स बनाम जावा संदर्भ

    पॉइंटर्स C, C++ प्रोग्रामिंग भाषाओं में, पॉइंटर एक वेरिएबल होता है जिसमें दूसरे वेरिएबल का पता होता है। उदाहरण #include <iostream> using namespace std;   int main() {    //int variable    int i = 8;    //pointer variable    int * pI;