पॉइंटर एक वेरिएबल है जो दूसरे वेरिएबल का पता स्टोर करता है।
विशेषताएं
पॉइंटर की विशेषताएं नीचे बताई गई हैं:
- पॉइंटर मेमोरी स्पेस बचाता है।
- सीधे मेमोरी लोकेशन एक्सेस के कारण पॉइंटर का एक्जीक्यूशन टाइम तेज होता है।
- पॉइंटर्स की मदद से, मेमोरी को कुशलता से एक्सेस किया जाता है, यानी मेमोरी को डायनामिकली एलोकेट और डीएलोकेट किया जाता है।
- पॉइंटर्स का उपयोग डेटा स्ट्रक्चर्स के साथ किया जाता है।
पॉइंटर घोषणा, आरंभीकरण और एक्सेस करना
निम्नलिखित स्टेटमेंट पर विचार करें:
int qty = 179;
मेमोरी में, वेरिएबल को निम्नानुसार दर्शाया जा सकता है:

पॉइंटर घोषित करना
इसका अर्थ है 'p' एक पॉइंटर वेरिएबल है जो दूसरे इंटीजर वेरिएबल का पता रखता है, जैसा कि नीचे दिए गए स्टेटमेंट में बताया गया है:
int *p;
पॉइंटर का आरंभीकरण
एड्रेस ऑपरेटर (&) का उपयोग पॉइंटर वेरिएबल को आरंभ करने के लिए किया जाता है।
उदाहरण:
int qty = 175; int *p; p = &qty;

पॉइंटर के माध्यम से वेरिएबल एक्सेस करना
वेरिएबल के मान को एक्सेस करने के लिए, इनडायरेक्शन ऑपरेटर (*) का उपयोग किया जाता है।
उदाहरण:

यहां, '*' को एड्रेस पर मान माना जा सकता है।
निम्नलिखित स्टेटमेंट द्वारा दो स्टेटमेंट्स समतुल्य हैं:
p = &qty; n = *p; n = qty
पॉइंटर्स और वन-डायमेंशनल ऐरे
- कंपाइलर ऐरे के सभी एलिमेंट्स के लिए सतत मेमोरी लोकेशन्स एलोकेट करता है।
- बेस एड्रेस = ऐरे के पहले एलिमेंट का एड्रेस (इंडेक्स 0)।
- उदाहरण: int a[5] = {10, 20, 30, 40, 50};
एलिमेंट्स
पांच एलिमेंट्स निम्नानुसार स्टोर होते हैं:

यदि 'p' को इंटीजर पॉइंटर के रूप में घोषित किया जाता है, तो ऐरे 'a' को निम्नलिखित असाइनमेंट द्वारा इंगित किया जा सकता है:
p = a; (या) p = &a[0];
'a' के हर मान को p++ का उपयोग करके एक एलिमेंट से दूसरे एलिमेंट पर जाकर एक्सेस किया जाता है। जब एक पॉइंटर इंक्रीमेंट होता है, तो इसका मान उस डेटा टाइप के आकार से बढ़ जाता है जिसकी ओर यह इंगित करता है। इस लंबाई को "स्केल फैक्टर" कहा जाता है।
'p' और 'a' के बीच संबंध नीचे समझाया गया है:
p = &a[0] = 1000 p+1 = &a[1] = 1004 p+2 = &a[2] = 1008 p+3 = &a[3] = 1012 p+4 = &a[4] = 1016
किसी एलिमेंट का एड्रेस उसके इंडेक्स और डेटा टाइप के स्केल फैक्टर का उपयोग करके गणना की जाती है। इसे समझाने के लिए एक उदाहरण दिया गया है।
a[3] का एड्रेस = बेस एड्रेस + (3 * int का स्केल फैक्टर) = 1000 + (3 * 4) = 1000 + 12 = 1012
पॉइंटर्स का उपयोग ऐरे एलिमेंट्स को एक्सेस करने के लिए ऐरे इंडेक्सिंग के बजाय किया जा सकता है।
*(p+3), a[3] का मान देता है।
a[i] = *(p + i)
उदाहरण प्रोग्राम
निम्नलिखित C प्रोग्राम पॉइंटर्स और वन-डायमेंशनल ऐरे के लिए है:
#include <stdio.h>
int main() {
int a[5];
int *p, i;
printf("5 एलिमेंट्स दर्ज करें: ");
for (i = 0; i < 5; i++)
scanf("%d", &a[i]);
p = &a[0];
printf("ऐरे के एलिमेंट्स हैं: ");
for (i = 0; i < 5; i++)
printf("%d", *(p + i));
return 0;
}
आउटपुट
उपरोक्त प्रोग्राम को निष्पादित करने पर निम्नलिखित परिणाम प्राप्त होता है:
5 एलिमेंट्स दर्ज करें: 10 20 30 40 50 ऐरे के एलिमेंट्स हैं: 10 20 30 40 50