C प्रोग्रामिंग (उदाहरण के साथ) में एरे और पॉइंटर्स के बीच संबंध

इस ट्यूटोरियल में, आप C प्रोग्रामिंग में सरणियों और बिंदुओं के बीच संबंध के बारे में जानेंगे। आप पॉइंटर्स का उपयोग करके एरे तत्वों को एक्सेस करना भी सीखेंगे।

इससे पहले कि आप सरणियों और बिंदुओं के बीच संबंध के बारे में जानें, इन दो विषयों की जांच करना सुनिश्चित करें:

  • C एरेस
  • C पॉइंटर्स

Arrays और संकेत के बीच संबंध

एक सरणी अनुक्रमिक डेटा का एक ब्लॉक है। चलो सरणी तत्वों के पते प्रिंट करने के लिए एक कार्यक्रम लिखें।

 #include int main() ( int x(4); int i; for(i = 0; i < 4; ++i) ( printf("&x(%d) = %p", i, &x(i)); ) printf("Address of array x: %p", x); return 0; ) 

आउटपुट

 & x (0) = 1450734448 और x (1) = 1450734452 और x (2) = 1450734456 और x (3) = 1450734460 सरणी का पता x: 1450734448 

सरणी x के दो लगातार तत्वों के बीच 4 बाइट्स का अंतर है। इसका कारण यह है कि आकार int4 बाइट्स (हमारे संकलक पर) है।

ध्यान दें कि, & x (0) और x का पता एक ही है। यह इसलिए है क्योंकि चर नाम x सरणी के पहले तत्व को इंगित करता है।

उपरोक्त उदाहरण से, यह स्पष्ट है कि &x(0)एक्स के बराबर है। और, x(0)के बराबर है *x

इसी तरह,

  • &x(1)के बराबर है x+1और x(1)के बराबर है *(x+1)
  • &x(2)के बराबर है x+2और x(2)के बराबर है *(x+2)
  • मूल रूप से, &x(i)के बराबर है x+iऔर x(i)इसके बराबर है *(x+i)

उदाहरण 1: संकेत और सारणी

 #include int main() ( int i, x(6), sum = 0; printf("Enter 6 numbers: "); for(i = 0; i < 6; ++i) ( // Equivalent to scanf("%d", &x(i)); scanf("%d", x+i); // Equivalent to sum += x(i) sum += *(x+i); ) printf("Sum = %d", sum); return 0; ) 

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 6 नंबर दर्ज करें: 2 3 4 4 12 4 Sum = 29 

यहां, हमने 6 तत्वों की एक सरणी x घोषित की है। सरणी के तत्वों तक पहुंचने के लिए, हमने पॉइंटर्स का उपयोग किया है।

अधिकांश संदर्भों में, सरणी के नाम सूचक को क्षय करते हैं। सरल शब्दों में, सरणी नाम बिंदुओं में परिवर्तित हो जाते हैं। यही कारण है कि आप एरे के तत्वों तक पहुंचने के लिए पॉइंटर्स का उपयोग कर सकते हैं। हालाँकि, आपको याद रखना चाहिए कि संकेत और सरणियाँ समान नहीं हैं

ऐसे कुछ मामले हैं जहाँ सरणी नाम संकेत करने वालों के लिए क्षय नहीं करते हैं। अधिक जानने के लिए, इस पर जाएं: सरणी का नाम सूचक में कब नहीं क्षय होता है?

उदाहरण 2: ऐरे और पॉइंटर्स

 #include int main() ( int x(5) = (1, 2, 3, 4, 5); int* ptr; // ptr is assigned the address of the third element ptr = &x(2); printf("*ptr = %d ", *ptr); // 3 printf("*(ptr+1) = %d ", *(ptr+1)); // 4 printf("*(ptr-1) = %d", *(ptr-1)); // 2 return 0; )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 * ptr = 3 * (ptr + 1) = 4 * (ptr-1) = 2

इस उदाहरण में, &x(2)तीसरे तत्व का पता, ptr पॉइंटर को सौंपा गया है। इसलिए, 3जब हमने प्रिंट किया था , तब प्रदर्शित किया गया था *ptr

और, मुद्रण *(ptr+1)हमें चौथा तत्व देता है। इसी तरह, मुद्रण *(ptr-1)हमें दूसरा तत्व देता है।

दिलचस्प लेख...