ऐरे ऑफ पॉइंटर्स
किसी भी डेटा टाइप की तरह, हम पॉइंटर्स का ऐरे घोषित कर सकते हैं।
घोषणा
datatype *pointername[size];
उदाहरण: int *p[5]; // 5 इंटीजर एड्रेस रखने वाला पॉइंटर ऐरे
आरंभीकरण
int a[3] = {10, 20, 30};
int *p[3];
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("Array elements via pointers: ");
for (i = 0; i < 3; i++)
printf("%d\t", *p[i]);
return 0;
}
आउटपुट
Array elements via pointers: 10 20 30
पॉइंटर टू पॉइंटर (डबल पॉइंटर)
पॉइंटर टू पॉइंटर एक वेरिएबल है जो दूसरे पॉइंटर का एड्रेस रखता है।
घोषणा
datatype **pointer_name;
उदाहरण: int **p;
आरंभीकरण
int a = 10;
int *p;
int **q;
p = &a;
q = &p;
एक्सेस करना
**q // a का मान देता है
प्रोग्राम
#include <stdio.h>
int main() {
int a = 10;
int *p;
int **q;
p = &a;
q = &p;
printf("a = %d\n", a);
printf("a via pointer = %d\n", *p);
printf("a via pointer to pointer = %d\n", **q);
return 0;
}
आउटपुट
a = 10 a via pointer = 10 a via pointer to pointer = 10
उपयोग केस
- ऐरे ऑफ पॉइंटर्स: स्ट्रिंग्स ऐरे, कमांड लाइन आर्गुमेंट्स (
argv), डायनामिक 2D ऐरे। - पॉइंटर टू पॉइंटर: फंक्शन में पॉइंटर मॉडिफाई करना, डायनामिक 2D ऐरे, लिंक्ड लिस्ट में नोड इन्सर्शन/डिलीशन।