सीधे मुख्य सामग्री पर जाएं

Pointer

Pointer एक प्रकार का वेरिएबल होता है जो मेमोरी एड्रेस को संगृहीत करता है। कहने का मतलब ये है कि pointer मेमोरी के किसी लोकेशन को इंगित करता है जिस पर कोई डाटा अंकित होता है।

आगे बढ़ने से पहले हम & ऑपरेटर के बारे में जान लेतें है। & ऑपरेटर का प्रयोग किसी वेरिएबल के मेमोरी एड्रेस को प्राप्त करने के लिए किया जाता है। यदि हमने किसी वेरिएबल i को डिक्लेअर किया है तो &i उस वेरिएबल का मेमोरी एड्रेस बताता है।

तो चलिए आगे बढ़ते हैं और देखते हैं कि pointer को डिक्लेअर और डिफाइन कैसे करते हैं।

int i;
int *p;
i = 5;
p = &i;
printf("%d", *p);

Pointer को डिक्लेअर करने के लिए हम पहले उस डाटा टाइप को लिखतें है जिस डाटा टाइप के मेमोरी एड्रेस को वो इंगित करेगा। मतलब ये कि अगर pointer में हमे किसी int डाटा टाइप के वेरिएबल का मेमोरी एड्रेस संगृहीत करना है तो हम pointer को int डाटा टाइप का डिक्लेअर करेंगे। दूसरे शब्दों में यूं कहें कि pointer को उसी डाटा टाइप का डिक्लेअर करते है जिस डाटा टाइप का डाटा उस मेमोरी में संगृहीत है जिसके एड्रेस को ये pointer इंगित करेगा। डाटा टाइप लिखने के बाद हम * चिन्ह लगा कर उसे pointer का नाम लिख देतें हैं।

Pointer को डिफाइन करने के लिए लाइन 4 पर दिए तरीके से करते हैं जिसमे हम pointer का नाम लिखकर, = का चिन्ह लगाकर & के द्वारा उसमे मेमोरी एड्रेस संगृहीत कर देतें हैं।

pointer द्वारा इंगित मेमोरी एड्रेस पर लिखे मान को प्राप्त करना : जैसा कि हम देख चुके हैं कि pointer किसी मेमोरी एड्रेस को इंगित करता है। अब यदि हमें उस मेमोरी एड्रेस पर अंकित मान को प्राप्त करना है तो हम pointer वेरिएबल के नाम के आगे * लगा कर प्राप्त करते हैं। जैसे:

int x;
int y;
int *j;
x = 2;
*j = &x;
y = *j;

यहाँ पर y का मान j द्वारा इंगित एड्रेस पर अंकित मान के बराबर होगा। चूँकि pointer j द्वारा x के मेमोरी एड्रेस को इंगित किया जा रहा है तथा x का मान 2 है इसलिए y का मान भी 2 होगा।



नोट : ध्यान रहे कि scanf और printf फंक्शन में variable और pointer को किस तरह प्रयोग करना है-

int i;
int *j;

scanf("%d", &i);
printf("%d", i);

scanf("%d", j);
printf("%d", *j);

टिप्पणियाँ

इस ब्लॉग से लोकप्रिय पोस्ट

Stack Data Structure in Hindi / स्टैक डाटा स्ट्रक्चर