हिन्दी में वैबसाइट डिजाइनिंग सीखना चाहते हैं तो हमारी साइट code sikho hindi को Subscribe करें

What is C++ Void Pointer

 सी ++ शून्य सूचक - C++ Void Pointer

C++ Void Pointer

C++ Void Pointer

What is C++ Void Pointer


एक शून्य सूचक एक सामान्य-उद्देश्य सूचक है जो किसी भी डेटा प्रकार का पता रख सकता है, लेकिन यह किसी भी डेटा प्रकार से संबद्ध नहीं है।


शून्य सूचक का सिंटेक्स- Syntax of void pointer


void *ptr;  


C ++ में, हम किसी भिन्न डेटा प्रकार के चर के लिए एक चर का पता निर्दिष्ट नहीं कर सकते हैं। निम्नलिखित उदाहरण पर विचार करें:


int *ptr;  // integer pointer declaration  

float a=10.2; // floating variable initialization  

ptr= &a;  // This statement throws an error.  


ऊपर दिए गए उदाहरण में, हम इंटीजर टाइप का एक पॉइंटर घोषित करते हैं, यानी, ptr और एक फ्लोट वेरिएबल, यानी, 'a'। घोषणा के बाद, हम 'a' वेरिएबल के एड्रेस को 'ptr' में स्टोर करने की कोशिश करते हैं, लेकिन C++ में यह संभव नहीं है क्योंकि वेरिएबल विभिन्न डेटा प्रकारों के एड्रेस को होल्ड नहीं कर सकता है।


आइए एक सरल उदाहरण के माध्यम से समझते हैं।


#include <iostream.h>  

using namespace std;  

int main()  

{  

    int *ptr;  

    float f=10.3;  

    ptr = &f; // error  

    std::cout << "The value of *ptr is : " <<*ptr<< std::endl;  

    return 0;  

}  


उपरोक्त प्रोग्राम में, हम पूर्णांक प्रकार के सूचक और फ्लोट प्रकार के चर घोषित करते हैं। एक पूर्णांक सूचक चर फ़्लोट चर को इंगित नहीं कर सकता है, लेकिन यह केवल एक पूर्णांक चर को इंगित कर सकता है।


Output:-


C++ Void Pointer 01



C++ ने C++ void पॉइंटर का उपयोग करके उपरोक्त समस्या को दूर किया है क्योंकि एक void पॉइंटर किसी भी डेटा प्रकार के पते को होल्ड कर सकता है।


आइए शून्य सूचक का एक सरल उदाहरण देखें।


#include <iostream>  

using namespace std;  

int main()  

{  

  void *ptr;   // void pointer declaration  

  int a=9;   // integer variable initialization  

  ptr=&a;   // storing the address of 'a' variable in a void pointer variable.  

  std::cout << &a << std::endl;  

  std::cout << ptr << std::endl;  

  return 0;  

}  


उपरोक्त कार्यक्रम में, हम एक शून्य सूचक चर और एक पूर्णांक चर घोषित करते हैं जहाँ शून्य सूचक में एक पूर्णांक चर का पता होता है।


Output:-


C++ Void Pointer 02



सी और सी ++ में शून्य सूचक के बीच अंतर


सी में, हम बिना किसी टाइपकास्टिंग के किसी अन्य पॉइंटर प्रकार को शून्य पॉइंटर असाइन कर सकते हैं, जबकि सी ++ में, जब हम शून्य पॉइंटर प्रकार को किसी अन्य पॉइंटर प्रकार को असाइन करते हैं तो हमें टाइपकास्ट करने की आवश्यकता होती है।


आइए एक सरल उदाहरण के माध्यम से समझते हैं।


In C,


#include <stdio.h>  

int main()  

{  

   void *ptr; // void pointer declaration  

   int *ptr1;  // integer pointer declaration  

   int a =90;  // integer variable initialization  

   ptr=&a; // storing the address of 'a' in ptr  

   ptr1=ptr; // assigning void pointer to integer pointer type.  

   printf("The value of *ptr1 : %d",*ptr1);  

   return 0;  

}  


उपरोक्त प्रोग्राम में, हम क्रमशः शून्य और पूर्णांक प्रकार के दो पॉइंटर्स 'ptr' और 'ptr1' घोषित करते हैं। हम पूर्णांक प्रकार चर, यानी 'ए' भी घोषित करते हैं। घोषणा के बाद, हम पॉइंटर 'ptr' को 'a' वेरिएबल का पता असाइन करते हैं। फिर, हम शून्य सूचक को पूर्णांक सूचक को असाइन करते हैं, अर्थात, ptr1 बिना किसी टाइपकास्टिंग के क्योंकि C में, हमें किसी अन्य प्रकार के सूचक को शून्य सूचक निर्दिष्ट करते समय टाइपकास्ट करने की आवश्यकता नहीं होती है।


Output:-


C++ Void Pointer 03


In C++,


#include <iostream>  

using namespace std;  

int main()  

{  

  void *ptr; // void pointer declaration  

  int *ptr1; // integer pointer declaration  

  int data=10; // integer variable initialization  

  ptr=&data;  // storing the address of data variable in void pointer variable  

  ptr1=(int *)ptr; // assigning void pointer to integer pointer  

  std::cout << "The value of *ptr1 is : " <<*ptr1<< std::endl;  

  return 0;  

}  


उपरोक्त कार्यक्रम में, हम क्रमशः शून्य और int प्रकार के दो सूचक चर घोषित करते हैं। हम एक अन्य पूर्णांक प्रकार का चर भी बनाते हैं, अर्थात, 'डेटा'। डिक्लेरेशन के बाद हम वेरिएबल 'डेटा' के एड्रेस को एक वॉयड पॉइंटर वेरिएबल यानी ptr में स्टोर करते हैं। अब, हम शून्य सूचक को पूर्णांक सूचक को असाइन करना चाहते हैं, ऐसा करने के लिए, हमें कास्ट ऑपरेटर, यानी, (int *) को शून्य सूचक चर पर लागू करने की आवश्यकता है। यह कास्ट ऑपरेटर कंपाइलर को बताता है कि किस प्रकार का मान शून्य सूचक धारण कर रहा है। Casting करने के लिए हमें (char *) या (int *) जैसे ब्रैकेट में डेटा टाइप और * टाइप करना होता है।


Output:-


C++ Void Pointer 04