Void Pointer क्या है? – Void Pointer In C In Hindi

हेलो फ्रेंड्स, आज के इस आर्टिकल में हम Void Pointer के बारे में बात करने वाले है | 

आज हम विस्तार से जानेगे कि Void Pointer क्या है? (What is Void Pointer In C In Hindi) और सी लैंग्वेज Void Pointer का उपयोग क्यों और कैसे किया जाता है?

तो आइये बिना समय गवाए जानते है Void Pointer क्या है? (What is Void Pointer In C In Hindi) 

Void Pointer क्या है? - Void Pointer In C In Hindi

Void pointer क्या है? (What is Void Pointer In C In Hindi) 

जैसे की हम जानते है एक पॉइंटर केवल उसी डेटा टाइप वाले वेरिएबल का एड्रेस स्टोर करता है जिस टाइप का वो होता है |  उदाहरण के लिए, यदि हम int पॉइंटर डिक्लेअर करते हैं, तो यह इंट पॉइंटर फ्लोट वेरिएबल या किसी अन्य प्रकार के वेरिएबल को point नहीं कर सकता है, यानी इस पॉइंटर की मदद से हम केवल int टाइप वेरिएबल को पॉइंट कर सकता है। 

ऐसे में इस समस्या को दूर करने के लिए सी लैंग्वेज में void pointer का कांसेप्ट आया । 

Void pointer एक generic पॉइंटर है जिसका किसी भी डेटा टाइप से कोई सम्बन्ध नहीं होता |  यह किसी भी टाइप के वेरिएबल का एड्रेस स्टोर कर सकता है और इसे आसानी से किसी भी डेटा टाइप में टाइप-कास्ट किया जा सकता है।

Void pointer का डिक्लेरेशन साधारण पॉइंटर की ही तरह होता है मगर void pointer डिक्लेअर करते समय void कीवर्ड का उपयोग किया जाता है | 

इसका सिंटेक्स कुछ ऐसा होता है -:

Syntax 

void *pointer_name;  

Example 

void *ptr;  

यहाँ void एक कीवर्ड है जिसका उपयोग करते हुए हम void pointer डिक्लेअर कर रहे है और ptr, एक void pointer है | 

What is the size of a void pointer in C?

Void pointer का साइज character पॉइंटर के साइज के जैसा होता है |  इसका representation भी करैक्टर पॉइंटर जैसा होता है | 

नोट -: पॉइंटर्स की साइज आप कौन सा प्लेटफार्म उपयोग करे रहे है उस पर डिपेंड करती है यह 2bytes, 4 bytes या 8 bytes …आदि हो सकता है।

Example -: 

#include <stdio.h>  
void main()  
{  
/*Declaration of void pointer, integer pointer character pointer and float   pointer  
*/
    void *ptr = NULL;   
    int *p  = NULL;        
    char *cp = NULL;      
    float *fp = NULL;   

    //size of void pointer  
    printf("size of void pointer = %d\n",sizeof(ptr));  

    //size of integer pointer  
    printf("size of integer pointer = %d\n",sizeof(p));  

    //size of character pointer  
    printf("size of character pointer = %d\n",sizeof(cp));  

    //size of float pointer  
    printf("size of float pointer = %d\n",sizeof(fp));  
}  

Output -: On a 32-bit system machine

size of void pointer = 4
size of integer pointer = 4
size of character pointer = 4
size of float pointer = 4

Why we use void pointers?

हम void pointers का उपयोग इसकी reusability के कारण करते है | Void pointers  किसी भी टाइप के ऑब्जेक्ट का एड्रेस स्टोर कर सकता है और हम indirection operator का उपयोग करके उचित टाइपकास्टिंग के साथ किसी भी टाइप के ऑब्जेक्ट को पुनः प्राप्त कर सकते हैं।

Example -:

#include<stdio.h>   
void main()   
{   
//Declaration & initialization of different pointers
  int a=6; 
  float b=5.2;  
  char c='J';
   void *ptr;

   // assigning the address of variable 'a' 
   ptr=&a;  
   printf("value of 'a' is : %d",*((int*)ptr));  

   // assigning the address of variable 'b'  
   ptr=&b;  
   printf("\nvalue of 'b' is : %f",*((float*)ptr));  

   // assigning the address of variable 'c'  
   ptr=&c;  
    printf("\nvalue of 'c' is : %c",*((char*)ptr));  
  
}  

Output -:

value of 'a' is : 6
value of 'b' is : 5.200000
value of 'c' is : J

Explanation  -: 

ऊपर दिए गए प्रोग्राम को आप सबसे पहले एक बार अच्छे से देखे! इस प्रोग्राम में हमने एक void पॉइंटर ptr नाम से बनाया है जो अलग अलग टाइप (int, char, float) वाले वेरिएबल्स (a, b, c) का एड्रेस बारी बारी पॉइंट करता है और indirection operator तथा उचित टीपकास्टिंग का उपयोग करते हुए इनके वैल्यूज को वापस लौटता है | 

Advantages of Void Pointers

  • malloc() और calloc() फ़ंक्शन void pointer रिटर्न करते हैं, इसलिए इन functions का उपयोग किसी भी डेटा टाइप की मेमोरी allocate करने के लिए किया जाता है।
  • Generic functions के कांसेप्ट को implement करने के लिए सी लैंग्वेज में void pointer का उपयोग किया जाता है | 
  • Void pointer का उपयोग करके हम एक generic linked list भी create कर सकते हैं।

Important points 

  • Void pointer के साथ पॉइंटर अरिथमेटिक ऑपरेशन्स परफॉर्म नहीं किया जा सकता |
  • इसे dereferenced के रूप में उपयोग नहीं किया जा सकता है।

आइये इन दोनों बातों को हम उदाहरण के एक द्वारा समझते है

Dereferencing a void pointer in C

अन्य पॉइंटर्स की तरह, हम void pointers को dereference नहीं कर सकते क्योंकि कंपाइलर के पास पॉइंट ऑब्जेक्ट के बारे में कोई जानकारी नहीं होती । यदि हम नीचे दिए गए कोड को Compile करने का प्रयास करते हैं तो हमें कंपाइलर error मिलेगी।

#include <stdio.h>  
void main()  
{  
   int a=90;  
   void *ptr;  
   ptr=&a;  
   printf("Value which is pointed by ptr pointer : %d",*ptr);  
}  

ऊपर दिए गए कोड में, *ptr एक void pointer है जो integer variable ‘a’ को पॉइंट करता है। और जैसा कि हम पहले से जानते हैं कि void pointer को dereference नहीं किया जा सकता है, इसलिए उपरोक्त कोड compile-time error देगा |

Output -:

Void Pointer क्या है? - Void Pointer In C In Hindi

Arithmetic operation on void pointers

हम void pointers पर सीधे arithmetic operations अप्लाई नहीं कर सकते हैं। हमें इसके लिए उचित टाइपकास्टिंग करने की आवश्यकता होती है ताकि हम void pointers पर arithmetic operations कर सकें।

Example -:

#include<stdio.h>   
void main()   
{   
   float a[4]={6.1,2.3,7.8,9.0};  
   void *ptr;  
   ptr=a;  
   for(int i=0;i<4;i++)  
  {  
      printf("%f,",*ptr);  
      ptr=ptr+1;         // Incorrect.  
  }
}  

ऊपर दिए गए कोड को रन करने पर compile-time error देगा कि “invalid use of void expression” क्योंकि हम सीधे  void pointer पर arithmetic operations (ptr=ptr+1) अप्लाई नहीं कर सकते हैं।

Conclusion 

दोस्तों आशा करता हु कि आज के इस आर्टिकल को पढ़ने के बाद आपको Void Pointer क्या है? (What is Void Pointer In C In Hindi) और सी लैंग्वेज Void Pointer का उपयोग क्यों और कैसे किया जाता है? से संबंधित सभी जानकारी मिल गई होगी |

अगर आप सी लैंग्वेज का Complete Tutorial चाहते है तो मेरे इस पोस्ट C Language Tutorial In Hindi को देखे यहाँ आपको C Programming Language के सभी टॉपिक्स step by step मिल जाएगी |

दोस्तों आशा करता हु कि आपको ये पोस्ट पसंद आई होगी और अगर आपको ये पोस्ट पसंद आया है तो इस पोस्ट को अपने अपने दोस्तों को शेयर करना न भूलिएगा ताकि उनको भी Void Pointer क्या है? (What is Void Pointer In C In Hindi) से संबंधित जानकारी प्राप्त हो सके |

अगर आपको अभी भी Void Pointer In C In Hindi से संबंधित कोई भी प्रश्न या Doubt है तो आप जरूर बताये मैं आपके सभी सवालों का जवाब दूँगा और ज्यादा जानकारी के लिए आप हमसे संपर्क कर सकते है |

ऐसे ही नयी टेक्नोलॉजी ,Programming Language, Coding , C Language, C++, Python Course , Java Tutorial से रिलेटेड जानकारियाँ पाने के लिए हमारे इस वेबसाइट को सब्सक्राइब कर दीजिए | जिससे हमारी आने वाली नई पोस्ट की सूचनाएं जल्दी प्राप्त होगी |

Jeetu Sahu is A Web Developer | Computer Engineer | Passionate about Coding, Competitive Programming and Blogging

Leave a Comment