सी में ऐरे का उपयोग एक ही प्रकार के तत्वों को स्टोर करने के लिए किया जाता है जबकि पॉइंटर्स एड्रेस वेरिएबल्स होते हैं जो एक वेरिएबल के एड्रेस को स्टोर करते हैं। अब सरणी चर में एक पता भी होता है जिसे एक सूचक द्वारा इंगित किया जा सकता है और सूचक का उपयोग करके सरणी को नेविगेट किया जा सकता है। सरणी के लिए सूचक का उपयोग करने का लाभ दो गुना है, पहला, हम सूचक को गतिशील रूप से आवंटित सरणी का पता संग्रहीत करते हैं और दूसरा, किसी फ़ंक्शन में सरणी पास करने के लिए। सरणी का उपयोग करने और सरणी में पॉइंटर का उपयोग करने में अंतर निम्नलिखित हैं।
-
आकार () ऑपरेटर सरणी के मामले में सरणी के आकार को प्रिंट करता है और सूचक के मामले में, यह int के आकार को प्रिंट करता है।
-
असाइनमेंट सरणी चर को किसी अन्य चर का पता नहीं सौंपा जा सकता है लेकिन सूचक इसे ले सकता है।
-
पहला मान पहला अनुक्रमित मान सूचक के मान के समान है। उदाहरण के लिए, सरणी[0] ==*p.
-
पुनरावृत्ति सरणी तत्वों को [] का उपयोग करके अनुक्रमणिका का उपयोग करके नेविगेट किया जा सकता है, सूचक सूचक अंकगणित का उपयोग करके सरणी तत्वों तक पहुंच प्रदान कर सकता है। उदाहरण के लिए, सरणी[2] ==*(p+2)
उदाहरण (सी)
#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