BCA / B.Tech 11 min read

pointer in Hindi | C

Pointer in C language in Hindi | C भाषा में पॉइंटर हिंदी में  :


  • C भाषा में पॉइंटर एक महत्वपूर्ण और शक्तिशाली फीचर है जो हमें मेमोरी लोकेशन को सीधे एक्सेस करने की अनुमति देता है। पॉइंटर वह वेरिएबल होता है जो किसी अन्य वेरिएबल के मेमोरी एड्रेस को स्टोर करता है।
  •  पॉइंटर का सही उपयोग करके हम मेमोरी में अधिकतम कार्यक्षमता प्राप्त कर सकते हैं और प्रोग्रामिंग में जटिल समस्याओं को हल कर सकते हैं।
  • C भाषा में पॉइंटर एक शक्तिशाली टूल है जो हमें मेमोरी को डायरेक्टली एक्सेस करने और जटिल डेटा स्ट्रक्चर को हैंडल करने की क्षमता प्रदान करता है। 
  • इसका सही उपयोग करने पर प्रोग्राम को अधिक इफिशिएंट और प्रभावी बनाया जा सकता है, लेकिन इसका गलत उपयोग करने से प्रोग्राम की कार्यक्षमता पर नकारात्मक प्रभाव भी पड़ सकता है।
पॉइंटर क्या है?

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

Features of pointer in C language in Hindi | पॉइंटर की विशेषताएँ:

  • मेमोरी एड्रेस स्टोर करना: पॉइंटर किसी वेरिएबल के मेमोरी एड्रेस को स्टोर करता है।
  • डायरेक्ट मेमोरी एक्सेस: पॉइंटर के जरिए हम डायरेक्ट मेमोरी को एक्सेस कर सकते हैं।
  • डायनामिक मेमोरी एलोकेशन: पॉइंटर का उपयोग करके रन-टाइम में मेमोरी को एलोकेट और डीलोकेट किया जा सकता है।
  • कॉल बाय रेफरेंस: पॉइंटर का उपयोग करके फ़ंक्शन में आर्गुमेंट्स पास किए जाते हैं जिससे हम ओरिजिनल वेरिएबल को बदल सकते हैं।

Declaration & use of pointer in C language in Hindi | पॉइंटर का डिक्लेरेशन और उपयोग :

पॉइंटर को डिक्लेयर करने के लिए * (स्टार) सिंबल का उपयोग किया जाता है। इसे डिक्लेयर करने का सामान्य रूप है:

datatype *pointer_name;

यहां datatype उस वेरिएबल के प्रकार को दर्शाता है जिसका एड्रेस पॉइंटर स्टोर करेगा, और pointer_name पॉइंटर का नाम है।

उदाहरण: पॉइंटर का उपयोग :


#include <stdio.h>

int main() {
    int a = 10;  // साधारण वेरिएबल
    int *p;      // पॉइंटर वेरिएबल
    
    p = &a;      // a के एड्रेस को p में स्टोर कर रहे हैं
    
    // a का मेमोरी एड्रेस और वैल्यू को प्रिंट करना
    printf("a का मेमोरी एड्रेस: %p\n", p);
    printf("a की वैल्यू: %d\n", *p);  // डिरेफरेंसिंग
    
    return 0;
}

आउटपुट:

a का मेमोरी एड्रेस: 0x7ffd73b7c2ac
a की वैल्यू: 10

Operation of pointer in C language in Hindi | पॉइंटर की ऑपरेशन्स  :

  • एड्रेस ऑफ ऑपरेटर (&): यह ऑपरेटर किसी वेरिएबल का मेमोरी एड्रेस प्राप्त करता है।
  • p = &a;  // p में a का मेमोरी एड्रेस स्टोर हो रहा है
  • डिरेफरेंसिंग ऑपरेटर (*): यह ऑपरेटर पॉइंटर में स्टोर किए गए एड्रेस पर मौजूद डेटा को एक्सेस करता है।
  • printf("%d", *p);  // p में स्टोर एड्रेस पर मौजूद डेटा को प्रिंट कर रहा है
  • Use of Dymanic memory allocation in pointer in C language in Hindi | डायनामिक मेमोरी एलोकेशन में पॉइंटर का उपयोग
  • पॉइंटर का उपयोग डायनामिक मेमोरी एलोकेशन के लिए किया जाता है, जहां malloc(), calloc(), और free() जैसी फ़ंक्शंस का उपयोग होता है।

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *ptr;
    
    // malloc() का उपयोग करके मेमोरी एलोकेट कर रहे हैं
    ptr = (int*) malloc(sizeof(int));
    
    *ptr = 100;  // डायनामिकली एलोकेटेड मेमोरी में वैल्यू असाइन कर रहे हैं
    
    printf("डायनामिक मेमोरी में स्टोर वैल्यू: %d\n", *ptr);
    
    free(ptr);  // मेमोरी को फ्री कर रहे हैं
    
    return 0;
}

Types of Pointer in C language in Hindi | पॉइंटर के प्रकार :

  • नल पॉइंटर (NULL Pointer): यह पॉइंटर उस स्थिति का प्रतिनिधित्व करता है जब किसी पॉइंटर को कोई मान या एड्रेस असाइन नहीं किया गया होता है। इसे NULL वैल्यू दी जाती है।
int *ptr = NULL;

  • वाइल्ड पॉइंटर (Wild Pointer): यह वह पॉइंटर होता है जिसे किसी मेमोरी एड्रेस के साथ इनिशियलाइज नहीं किया गया है। यह खतरनाक होता है और प्रोग्राम क्रैश कर सकता है।
  • डंग्लिंग पॉइंटर (Dangling Pointer): यह वह पॉइंटर होता है जो उस मेमोरी लोकेशन को पॉइंट करता है जो फ्री हो चुकी है।
  • फ़ंक्शन पॉइंटर (Function Pointer): फ़ंक्शन पॉइंटर वह पॉइंटर होता है जो किसी फ़ंक्शन के एड्रेस को स्टोर करता है और इसका उपयोग फ़ंक्शन को इनवोक करने के लिए किया जाता है।

void (*fun_ptr)(int) = &someFunction;

Uses & importance of Pointer in C language in Hindi | पॉइंटर का महत्व और उपयोग

  • फ़ंक्शन के साथ कॉल बाय रेफरेंस: पॉइंटर का उपयोग कॉल बाय रेफरेंस के रूप में किया जाता है, जिससे हम ओरिजिनल वेरिएबल को बदल सकते हैं।
  • डायनामिक मेमोरी एलोकेशन: पॉइंटर का उपयोग डायनामिक मेमोरी एलोकेशन के लिए किया जाता है। इससे हमें रन-टाइम में मेमोरी को नियंत्रित करने की क्षमता मिलती है।
  • डाटा स्ट्रक्चर में उपयोग: पॉइंटर का उपयोग विभिन्न डेटा स्ट्रक्चर जैसे लिंक्ड लिस्ट, ग्राफ़, और ट्री में किया जाता है।
  • मल्टीपल वैल्यू रिटर्न: पॉइंटर का उपयोग फ़ंक्शन से मल्टीपल वैल्यू रिटर्न करने के लिए किया जा सकता है।

Advantages of pointer in C language in Hindi | पॉइंटर के लाभ

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

Disadvantages of pointer in C language in Hindi | पॉइंटर की हानियाँ

  • सुरक्षा की कमी: पॉइंटर के गलत उपयोग से प्रोग्राम क्रैश हो सकता है या अनजान मेमोरी लोकेशन को एक्सेस कर सकता है।
  • डिबग करना कठिन: पॉइंटर से संबंधित बग्स का पता लगाना और उन्हें ठीक करना कठिन हो सकता है।
  • डंग्लिंग पॉइंटर समस्या: यदि पॉइंटर किसी फ्री मेमोरी को पॉइंट करता है, तो डंग्लिंग पॉइंटर की समस्या उत्पन्न हो सकती है।