पॉइंटर क्या है? – What Is Pointer In C In Hindi

सी लैंग्वेज में Pointer का Concept काफी महत्वपूर्ण है | पॉइंटर का उपयोग सी लैंग्वेज में कुछ टास्क (जैसे – dynamic memory allocation) को आसान बनाती है | 

पॉइंटर के बारे में अच्छे से जानने से पहले आपको Address operator (&) और indirection operator (*) के बारे में जानना पड़ेगा | क्योकि ये दोनों की चीजे आपके Pointer के बारे में नॉलेज को बढ़ाएंगे तो सबसे पहले आप इनके बारे में जाने फिर पॉइंटर का ये आर्टिकल पढ़े | 

  • Address Operator (&) And indirection operator(*) in C 

आइये अब हम बिना समय गवाए जानते है कि पॉइंटर क्या है? (What is Pointer in C in Hindi) और सी लैंग्वेज में पॉइंटर का उपयोग कैसे करते है?

पॉइंटर क्या है? - What Is Pointer In C In Hindi

पॉइंटर क्या है? (What Is Pointer In C In Hindi)

पॉइंटर एक ऐसा वेरिएबल है जो दूसरे वेरिएबल का एड्रेस स्टोर/contain करता है | यह वेरिएबल int, char, float, double, array, function, pointer किसी भी टाइप का हो सकता है | 

एक पॉइंटर की साइज 32 बिट आर्किटेक्चर के हिसाब से 4 byte होती है | पॉइंटर की साइज आर्किटेक्चर पर depend करती है यदि आपका कम्पाइलर 64 bit वाला है तो पॉइंटर की साइज 8 byte होगी और यदि 32 bit वाला कम्पाइलर है तो पॉइंटर की साइज 4 बाइट होगी | 

पॉइंटर का डेटा टाइप पॉइंटर के साइज पर कोई असर नहीं डालता, मगर पॉइंटर जिस डेटा टाइप का होता है पॉइंटर उसी टाइप के वेरिएबल के एड्रेस को पॉइंट करता है | जैसे कोई पॉइंटर इन्टिजर टाइप का है तो वो केवल इन्टिजर टाइप वाले वेरिएबल के एड्रेस को ही पॉइंट/स्टोर करेगा | 

Declaration of Pointers in C

सी लैंग्वेज में जिस तरह हम वेरिएबल को डिक्लेअर करते है ठीक उसी तरह हमे पॉइंटर वेरिएबल को भी डिक्लेअर करना पड़ता है | पॉइंटर वेरिएबल को डिक्लेअर करते समय वेरिएबल नाम से पहले asterisk symbol (*) का उपयोग किया जाता है | 

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

Syntax of Pointer

data_type *var_name;

Example -:

int *pointer_Name;

निचे दिए उदाहरण को देखे इसमें हम एक पॉइंटर वेरिएबल बनायेगे और उसमे दूसरे वेरिएबल के एड्रेस को स्टोर करेंगे | 

int  x;   
int p = &x;  

नोट -: Address (&) एक ऐसा ऑपरेटर होता है जो वेरिएबल का एड्रेस प्रदान करता है |

इस उदाहरण में x एक नार्मल वेरिएबल है और p एक पॉइंटर वेरिएबल है जिसे हमने

बिना asterisk symbol (*) का उपयोग किये बनाया है | पॉइंटर वेरिएबल p में हम x वेरिएबल का एड्रेस स्टोर कर रहे है | 

चूँकि हमारे प्रोग्राम में कई सारे वेरिएबल हो सकते है ऐसे में हम कैसे पता लगाएंगे कि कौन सा वेरिएबल पॉइंटर वेरिएबल है और कौन सा वेरिएबल नार्मल वेरिएबल है | 

सी लैंग्वेज में नार्मल वेरिएबल और पॉइंटर वेरिएबल के बिच अंतर दिखाने या पहचानने  के लिए asterisk symbol (*) का उपयोग किया जाता है | 

जब हम पॉइंटर वेरिएबल को asterisk symbol (*) का उपयोग करते हुए बनाते है | तब हम पॉइंटर वेरिएबल को आसानी से नार्मल वेरिएबल से अलग पहचान सकते है | 

ऊपर दिए उदाहरण में हमने बिना asterisk symbol (*) का उपयोग करते हुए पॉइंटर वेरिएबल बनाया था इसलिए दोनों वेरिएबल में ये पहचानना मुश्किल था कि कौन सा पॉइंटर वेरिएबल है और कौन सा नार्मल वेरिएबल है | 

आइये अब हम asterisk symbol (*) का उपयोग करते हुए पॉइंटर बनाएंगे इससे हम पॉइंटर वेरिएबल और नार्मल वेरिएबल दोनों में आसानी से अंतर पहचान पाएंगे |

int  x;   
int *p = &x; 

Initialize a Pointer 

जैसे की हम जानते है पॉइंटर वेरिएबल दूसरे वेरिएबल का एड्रेस स्टोर/पॉइंट करता है | पॉइंटर जिस टाइप का होता है उसी टाइप के वेरिएबल के एड्रेस को Contain करता है | पॉइंटर वेरिएबल को Initialize करने के लिए हमारे पास पहले से डिक्लेअर एक वेरिएबल होना जरुरी है तभी हम इस पॉइंटर वेरिएबल में उस वेरिएबल का एड्रेस रख पाएंगे | 

Example -: 

#include<stdio.h>
void main()
{
int  x = 10;   
int *p = &x; 

printf(" x = %d p = %d",x, p);

}

Output -:

x = 10 , p = 1021817273 

इस आउटपुट में 1021817273,  x वेरिएबल का एड्रेस है जिसे हमने पॉइंटर वेरिएबल p में स्टोर किए थे | इस एड्रेस के द्दारा भी हम x वेरिएबल को एक्सेस और उपयोग कर सकते है | 

आइये जानते है पॉइंटर उपयोग करने के क्या कारण है या पॉइंटर का उपयोग क्यों और कहा कहा किस कंडीशन में किया जाता है?

पॉइंटर के उपयोग (Usage of Pointer in C)

  • पॉइंटर का उपयोग डायनामिक मेमोरी एलोकेशन तथा Deallocation में उपयोग किया जाता है | 
  • इसका उपयोग काम्प्लेक्स डेटा स्ट्रक्चर जैसे linked list, graph, tree आदि में किया जाता है | 
  •  सिस्टम लेवल प्रोग्रामिंग जहा मेमोरी एड्रेस काफी महत्वपूर्ण होता है में पॉइंटर का उपयोग  किया जाता है |  
  • डेटा स्ट्रक्चर को इम्प्लीमेंट करने के लिए | 
  • जब एक साथ मल्टीप्ल वैल्यूज रिटर्न करना हो तब पॉइंटर्स का उपयोग किया जाता है | 
  • Array element को एक्सेस करने के लिए भी पॉइंटर्स का उपयोग किया जा सकता है | 
  • फंक्शन को जब हमे किसी वेरिएबल का एड्रेस रिफरेन्स के रूप में पास करना होता है तब पॉइंटर का उपयोग किया जाता है | 
  • फाइल हैंडलिंग में पॉइंटर का उपयोग किया जाता है | 

पॉइंटर के लाभ (Advantages of Pointer in C)

पॉइंटर उपयोग करने के निम्नलिखित फायदे है -:

  • पॉइंटर मेमोरी सेव करता है | 
  • पॉइंटर, प्रोसेसिंग स्पीड को बढ़ाता है क्योकि डेटा का manipulated एड्रेस के द्वारा होता है | 
  • यह बड़ी कुशल तरीके से ऐरे को एक्सेस करने में मदद करता है | 
  • मेमोरी एड्रेस को काफी efficient तरीके से एक्सेस कर सकते है | 
  • चूँकि पॉइंटर का उपयोग डेटा स्ट्रक्चर के साथ होता है इसलिए यह two-dimensional and multi-dimensional arrays को रिप्रेजेंट करने में उपयोगी होता है | 
  • फाइल हैंडलिंग में पॉइंटर काफी उपयोगी होता है | 
  • डायनामिक मेमोरी एलोकेशन में पॉइंटर काफी उपयोगी होता है पॉइंटर की मदद से हम आसानी से डायनामिक मेमोरी एलोकेशन कर सकते है | 

पॉइंटर के नुकशान (Disadvantages of Pointer in C)

पॉइंटर उपयोग करने के कुछ नुकसान भी है आइये जानते है उन disadvantages के बारे में |

पॉइंटर उपयोग करने के निम्नलिखित नुकसान है -:

  • पॉइंटर को समझना थोड़ा जटिल है। 
  • यदि पॉइंटर को कोई इनकरेक्ट वैल्यू प्रोवाइड कर दी जाये तो मेमोरी कर्रप्ट हो सकता है | 
  • नार्मल वेरिएबल की तुलना में पॉइंटर थोड़े धीमे होते है | 
  • मेमोरी leakage की सम्भावना होती है | 
  • पॉइंटर के साथ वर्क करना प्रोग्रामर को थोड़ा कठिन लग सकता है मगर ये प्रोग्रामर की responsibility है की वो पॉइंटर का सही से उपयोग करे | 
  • पॉइंटर का उपयोग कई सारे प्रॉब्लम खड़ी कर सकता है इसलिए पॉइंटर का उपयोग सही तरीके से किया जाना आवश्यक है | 

Example of Pointer in C

आइये पॉइंटर को हम एक उदाहरण के द्वारा और अच्छे से समझते है

#include <stdio.h>
int main()
{
    int var1 =10;
    int *ptr;
    ptr = &var1;

    printf ( "Address of var1 is: %p", &var1);
    printf ( "\nAddress of var1 is: %p", ptr);

    printf ( "\nValue of var1 is: %d", var1);
    printf ( "\nValue of var1 is: %d", *ptr);
    printf ( "\nValue of var1 is: %d", *( &var1));

    /* Note I have used %p for p's value as it represents an address*/
    printf( "\nValue of pointer ptr is: %p", ptr);
    printf ( "\nAddress of pointer ptr is: %p", &ptr);

    return 0;
}

Output -:

Address of var1 is: 0x7ffe4ad9c2e4

Address of var1 is: 0x7ffe4ad9c2e4

Value of var1 is: 10

Value of var1 is: 10

Value of var1 is: 10

Value of pointer ptr is: 0x7ffe4ad9c2e4

Address of pointer ptr is: 0x7ffe4ad9c2e8

Program Explanation -:

इस उदाहरण में हमने var1 नाम से के नार्मल वेरिएबल और ptr नाम से एक पॉइंटर वेरिएबल बनाया है | पॉइंटर वेरिएबल ptr में हमे var1 वेरिएबल का एड्रेस रखा है | इस एड्रेस की मदद से हम var1 को आसानी से एक्सेस करके उसमे स्टोर वैल्यू को प्रिंट करा रहे है | साथ ही हम & ऑपरेटर के द्दारा पॉइंटर वेरिएबल और नार्मल वरीबाले के एड्रेस को भी स्क्रीन में प्रिंट करा रहे है | 

Key Point To Remember About Pointer

  • नार्मल वेरिएबल वैल्यू स्टोर करते है जबकि पॉइंटर वेरिएबल वेरिएबल का एड्रेस स्टोर करते है | 
  • * सिंबल का उपयोग पॉइंटर वेरिएबल को रिप्रेजेंट करने के लिए किया जाता है | 
  • जब हम * के साथ पॉइंटर का नाम भी लिखते है तब यह उस वेरिएबल को पॉइंट करता है जिसका एड्रेस हमने इस पॉइंटर में रखा है | 
  • पॉइंटर जिस टाइप का होता है वो उसी टाइप के वेरिएबल का एड्रेस contain करता है | 
  • पॉइंटर वेरिएबल का साइज हमेशा 4 बाइट (३२ बिट आर्किटेक्चर के हिसाब से) होती है |  
  • हम दो address को जोड़, गुणा और भाग नहीं दे सकते | 
  • हम वेरिएबल एड्रेस के साथ इन्टिजर वैल्यू को गुणा और भाग नहीं दे सकते | 
  • & सिंबल का उपयोग वेरिएबल का एड्रेस प्राप्त करने के लिए किया जाता है | 

Conclusion 

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

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

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

अगर आपको ये पोस्ट पसंद आया है तो इस पोस्ट को अपने अपने दोस्तों को शेयर करना न भूलिएगा ताकि उनको भी ये जानकारी प्राप्त हो सके |

अगर आपको अभी भी  पॉइंटर क्या है? (What is 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