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

पॉइंटर घोषित करना
इसका अर्थ है 'p' एक पॉइंटर वेरिएबल है, जो दूसरे इंटीजर वेरिएबल का पता रखता है, जैसा कि नीचे दिखाया गया है:
int *p;
पॉइंटर का आरंभीकरण
एड्रेस ऑपरेटर (&) का उपयोग पॉइंटर वेरिएबल को आरंभ करने के लिए किया जाता है।
उदाहरण: int qty = 175;
int *p;
p = &qty;
पॉइंटर्स का ऐरे
यह पतों का संग्रह है (या पॉइंटर्स का संग्रह)।
घोषणा
पॉइंटर्स के ऐरे के लिए घोषणा निम्नलिखित है:
datatype *pointername[size];
उदाहरण के लिए,
int *p[5];
यह पॉइंटर्स के ऐरे को दर्शाता है जो 5 इंटीजर एलिमेंट पतों को रख सकता है।
आरंभीकरण
'&' का उपयोग आरंभीकरण के लिए किया जाता है।
उदाहरण के लिए,
int a[3] = {10, 20, 30};
int *p[3], i;
for (i = 0; i < 3; i++)
p[i] = &a[i]; // या p[i] = a + i;
एक्सेस करना
इनडायरेक्शन ऑपरेटर (*) का उपयोग एक्सेस करने के लिए किया जाता है।
उदाहरण के लिए,
for (i = 0; i < 3; i++)
printf("%d", *p[i]);
उदाहरण प्रोग्राम
नीचे दिया गया प्रोग्राम पॉइंटर्स के ऐरे के लिए है:
#include <stdio.h>
int main() {
int a[3] = {10, 20, 30};
int *p[3], i;
for (i = 0; i < 3; i++)
p[i] = &a[i];
printf("ऐरे के एलिमेंट्स हैं:\n");
for (i = 0; i < 3; i++)
printf("%d\t", *p[i]);
return 0;
}
आउटपुट
उपरोक्त प्रोग्राम को निष्पादित करने पर निम्नलिखित परिणाम प्राप्त होता है:
ऐरे के एलिमेंट्स हैं: 10 20 30
उदाहरण 2: स्ट्रिंग्स के लिए पॉइंटर्स का ऐरे
नीचे दिया गया प्रोग्राम स्ट्रिंग्स के लिए पॉइंटर्स के ऐरे के लिए है:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char *a[5] = {"one", "two", "three", "four", "five"};
int i;
printf("स्ट्रिंग्स निम्न लोकेशन्स पर हैं:\n");
for (i = 0; i < 5; i++)
printf("%p\n", (void*)a[i]);
return 0;
}
आउटपुट
उपरोक्त प्रोग्राम को निष्पादित करने पर निम्नलिखित परिणाम प्राप्त होता है:
स्ट्रिंग्स निम्न लोकेशन्स पर हैं: 0x403000 0x403004 0x403008 0x40300e 0x403013