पॉइंटर्स का ऐरे (टू स्ट्रिंग्स)
पॉइंटर्स का ऐरे वह ऐरे है जिसके एलिमेंट्स स्ट्रिंग्स के बेस एड्रेस को पॉइंट करते हैं।
घोषणा और आरंभीकरण
char *a[3] = {"one", "two", "three"};
// a[0] -> "one" का बेस एड्रेस
// a[1] -> "two" का बेस एड्रेस
// a[2] -> "three" का बेस एड्रेस
लाभ
- टू-डायमेंशनल कैरेक्टर ऐरे के विपरीत, यहां प्रत्येक स्ट्रिंग केवल उतनी ही मेमोरी लेती है जितनी आवश्यक है।
- कोई फिक्स्ड साइज नहीं, इसलिए स्पेस की बर्बादी नहीं।
- स्ट्रिंग्स को आसानी से स्वैप/सॉर्ट किया जा सकता है (केवल पॉइंटर्स स्वैप होते हैं)।
उदाहरण 1: कंपाइल-टाइम आरंभीकरण
#include <stdio.h>
int main() {
char *a[5] = {"one", "two", "three", "four", "five"};
int i;
printf("The strings are: ");
for (i = 0; i < 5; i++)
printf("%s ", a[i]);
return 0;
}
आउटपुट
The strings are: one two three four five
उदाहरण 2: स्टूडेंट नेम्स
#include <stdio.h>
#include <string.h>
int main() {
char *students[] = {"bhanu", "ramu", "hari", "pinky"};
int i;
printf("Student names:\n");
for(i = 0; i < 4; i++)
printf("%s\n", students[i]);
return 0;
}
आउटपुट
Student names: bhanu ramu hari pinky
रनटाइम इनपुट के साथ
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char *names[3];
char buffer[100];
int i;
for (i = 0; i < 3; i++) {
printf("Enter name %d: ", i+1);
gets(buffer);
names[i] = malloc(strlen(buffer) + 1);
strcpy(names[i], buffer);
}
printf("\nNames entered:\n");
for (i = 0; i < 3; i++) {
printf("%s\n", names[i]);
free(names[i]); // मेमोरी फ्री करना न भूलें
}
return 0;
}