Address Operator (&) And Indirection Operator(*) In C

Address Operator (&) And indirection operator(*), पॉइंटर को समझने के लिए सबसे महत्वपूर्ण Concept है क्योकि सी लैंग्वेज में जब हम पॉइंटर का उपयोग करेंगे तो इन दोनों कांसेप्ट का उपयोग होगा | 

तो आइये बिना समय गवाए जानते है Address Operator (&) And indirection operator(*) के बारे में | 

Address Operator And Indirection Operator In C

Address Operator (&) In C

सी लैंग्वेज में जब हम कोई वेरिएबल डिक्लेअर करते है तब उस वेरिएबल को देख कर हम ये तीन चीजे आसानी से बता सकते है – वेरिएबल का नाम, वेरिएबल में किस टाइप की वैल्यू स्टोर होगी और वेरिएबल में कितने साइज की वैल्यू स्टोर होगी | मगर एक और चीज है जो वेरिएबल को मेमोरी में मिलता है और वो है मेमोरी एड्रेस | 

जिस स्थान पर वैरिएबल को मेमोरी मिलता है उस स्थान का एक एड्रेस होता है जिसे मेमोरी एड्रेस कहते है | वेरिएबल को मिलने वाला मेमोरी एड्रेस हमारे हाथ में नहीं होता ये सिस्टम decide करता है | 

यदि हमे किसी वेरिएबल का मेमोरी एड्रेस पता करना है तो इसके लिए हमे address ऑपरेटर (&) का उपयोग करना पड़ेगा | 

Address (&) एक ऐसा ऑपरेटर होता है जो वेरिएबल का एड्रेस प्रदान करता है | यह एक unary ऑपरेटर है जो केवल एक ओपेरंड पर कार्य करता है | ये जो ऑपरेंड होता है वो वेरिएबल name ही हो सकता है इसका उपयोग हम कांस्टेंट वैल्यू के साथ नहीं कर सकते | 

Address Operator (&) द्वारा प्रदान किये गए वेरिएबल एड्रेस के द्वारा हम उस वेरिएबल को आसानी से पहचान सकते है | Address Operator (&) को referencing ऑपरेटर भी कहा जाता है |

Syntax -:

&variable_name;

Example -:

#include<stdio.h>
void main()
{
  int x = 5;
  printf(" %d \n ", x );
  printf("%d \n", &x);
)

इस उदाहरण में हमने int x = 5; करके x नाम से एक वेरिएबल डिक्लेअर किया और डिक्लेरेशन के समय ही 5 को उस वेरिएबल में असाइन भी कर दिया | इसके बाद हमने printf() फंक्शन की मदद से सबसे पहले x की वैल्यू प्रिंट कराया उसके बाद x वेरिएबल को जिस स्थान पर मेमोरी मिला है उस स्थान का मेमोरी एड्रेस प्रिंट कराया जिसका आउटपुट कुछ ऐसा आया |

Output -:

5
200071

Asterisk (*) or Indirection Operator In C

asterisk (*) एक ऐसा ऑपरेटर होता है जो किसी वेरिएबल एड्रेस में स्टोर वैल्यू को प्रदान करता है | यह एक unary ऑपरेटर है जो केवल एक ओपेरंड पर कार्य करता है  Indirection operator (*) वेरिएबल के एड्रेस को आर्गुमेंट के रूप में लेता है | इसे dereferencing operator भी कहते है | 

Syntax -:

*&variable_name;

Example -:

#include<stdio.h>
void main()
{
int x =5; 
int y = *&x;
printf(" y = %d ", y);
}

इस उदाहरण में हमने int x = 5; करके x नाम से एक वेरिएबल डिक्लेअर किया और डिक्लेरेशन के समय ही 5 को उस वेरिएबल में असाइन भी कर दिया | इसके बाद हमने एक और int वेरिएबल बने जिसका नाम y रखा और इस y वेरिएबल में *&x; करके x वेरिएबल के एड्रेस में जो भी वैल्यू है उसको y वेरिएबल में असाइन किया | यहाँ पर  * x वेरिएबल के एड्रेस में स्टोर वैल्यू को रिटर्न करता है | 

हमने printf() फंक्शन की मदद से सबसे पहले y वेरिएबल को असाइन करके वैल्यू को स्क्रीन में प्रिंट करा दिया जिसका आउटपुट कुछ ऐसा आया  | 

Output -: y = 5

आइये Address Operator (&) और indirection operator को अच्छे से समझने के लिए एक और उदाहरण देखते है -:

Example of Address Operator (&) And indirection Operator

#include<stdio.h>
void main()
{
  int x = 5;
  printf(" %d \n ", x );
  printf("%d \n", &x);
  printf(" %d " *&x);
}

Output -:

5
2048
5

इस उदाहरण में हमने x नाम से एक वेरिएबल बनाया और उसमे 5 को असाइन कर दिया इसके बाद पहले वाले printf() की मदद से हमने x वेरिएबल में स्टोर वैल्यू को प्रिंट किया और दूसरे वाले printf() की मदद से x वैरिएबल के एड्रेस को स्क्रीन में प्रिंट कराया | 

तीसरे printf में हमने indirection operator (*) में *&x करके x वेरिएबल के एड्रेस को आर्गुमेंट के रूप में पास किया और जैसे की हमे पता है कि indirection operator (*) में जब किसी वेरिएबल का एड्रेस पास करते है तो indirection operator (*) उस वेरिएबल एड्रेस में स्टोर वैल्यू को लौटा देता है इसलिए तीसरे प्रिंटफ की मदद से हमे 5 वैल्यू आउटपुट के रूप में प्राप्त हुवा |  

दोस्तों अब आपको अच्छी तरह से समझ आ गया होगा कि Address Operator (&) And indirection operator(*) क्या है और इसका उपयोग सी लैंग्वेज में कैसे करते है |  

Address Operator (&) And indirection operator(*) का सबसे ज्यादा उपयोग पॉइंटर के साथ होता है तो इसके बाद अब आपको पॉइंटर के बारे में पढ़ना चाहिए | 

पॉइंटर के बारे में आप यहाँ से पढ़ सकते है -: पॉइंटर क्या है? (What is Pointer in C in Hindi)

Conclusion 

दोस्तों आशा करता हु कि आज के इस आर्टिकल को पढ़ने के बाद आप सभी को जानकारी मिल गई होगी कि  Address Operator (&) And indirection operator(*) क्या है? 

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

दोस्तों आशा करता हु कि आपको ये पोस्ट पसंद आई होगी और आपको Address Operator (&) And indirection operator(*) Hindi) के बारे में काफी जानकरी हुई होगी |

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

अगर आपको अभी भी Address Operator (&) And indirection operator(*) से संबंधित कोई भी प्रश्न या Doubt है तो आप जरूर बताये मैं आपके सभी सवालों का जवाब दूँगा और ज्यादा जानकारी के लिए आप हमसे संपर्क कर सकते है |

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