C में ऐरे का उपयोग समान प्रकार के तत्वों को संग्रहीत करने के लिए किया जाता है जबकि पॉइंटर्स एड्रेस वेरिएबल्स होते हैं जो किसी वेरिएबल का पता संग्रहीत करते हैं। अब ऐरे वेरिएबल का भी एक एड्रेस होता है जिसे एक पॉइंटर द्वारा इंगित किया जा सकता है और ऐरे को पॉइंटर का उपयोग करके नेविगेट किया जा सकता है। ऐरे के लिए पॉइंटर का उपयोग करने का लाभ दोहरा है: पहला, हम डायनामिक रूप से आवंटित ऐरे के पते को पॉइंटर में संग्रहीत करते हैं, और दूसरा, ऐरे को एक फंक्शन में पास करने के लिए। ऐरे और ऐरे के लिए पॉइंटर के उपयोग में निम्नलिखित अंतर हैं।
sizeof() ऑपरेटर ऐरे के मामले में ऐरे का आकार प्रिंट करता है और पॉइंटर के मामले में int का आकार प्रिंट करता है।
असाइनमेंट (assignment) ऐरे वेरिएबल को किसी अन्य वेरिएबल का पता असाइन नहीं किया जा सकता लेकिन पॉइंटर ले सकता है।
पहला मान (first value) पहला इंडेक्स किया गया मान पॉइंटर के मान के समान होता है। उदाहरण के लिए,
array[0] == *p।इटरेशन (iteration) ऐरे तत्वों को इंडेक्स का उपयोग करके [] के साथ नेविगेट किया जा सकता है, पॉइंटर पॉइंटर अंकगणित का उपयोग करके ऐरे तत्वों तक पहुंच दे सकता है। उदाहरण के लिए,
array[2] == *(p+2)।
उदाहरण (C)
#include <stdio.h>
void printElement(char* q, int index) {
printf("Element at index(%d) is: %c\n", index, *(q + index));
}
int main() {
char arr[] = {'A', 'B', 'C'};
char* p = arr;
printf("Size of arr[]: %d\n", sizeof(arr));
printf("Size of p: %d\n", sizeof(p));
printf("First element using arr is: %c\n", arr[0]);
printf("First element using p is: %c\n", *p);
printf("Second element using arr is: %c\n", arr[1]);
printf("Second element using p is: %c\n", *(p + 1));
printElement(p, 2);
return 0;
}
आउटपुट
Size of arr[]: 3 Size of p: 8 First element using arr is: A First element using p is: A Second element using arr is: B Second element using p is: B Element at index(2) is: C