https://www.rakeshmgs.in/search/label/Template
https://www.rakeshmgs.in

Learn in Hindi

RakeshMgs

Pointer and Arrays in C Programming Hindi Notes

शनिवार, मार्च 20, 2021

Pointer and Arrays

जब एक array को declare किया जाता है, तो कंपाइलर array के सभी elements को contain करने के लिए पर्याप्त मात्रा में मेमोरी allocate करता है। Base address यानी array के पहले element का address भी compiler द्वारा allocate किया जाता है।
मान लीजिए हम एक array arr को declare करते हैं

	
	
int arr[5] = { 1, 2, 3, 4, 5 };

यह मानते हुए कि arr का base address 1000 है और प्रत्येक integer को दो बाइट्स की आवश्यकता होती है, पांच elements को निम्नानुसार store किया जाएगा



यहां वेरिएबल arr बेस एड्रेस देगा, जो array के पहले एलिमेंट की ओर इशारा करने वाला एक constant pointer है|

	
	
int *p; p = arr; // or, p = &arr[0]; //both the statements are equivalent.

अब हम p का उपयोग करके array को access करने वाले प्रत्येक element को एक element से दूसरे element तक ले जा सकते हैं।

NOTE: एक बार इंक्रीमेंट करने पर आप पॉइंटर decrement नहीं कर सकते। p-- काम नहीं करेगा।

Pointer to Array

जैसा कि ऊपर अध्ययन किया गया है, हम एक पॉइंट को point करने के लिए एक पॉइंटर का उपयोग कर सकते हैं, और फिर array elements को एक्सेस करने के लिए हम उस पॉइंटर का उपयोग कर सकते हैं।
चलो एक उदाहरण है

	
	
#include <stdio.h> int main() { int i; int a[5] = {1, 2, 3, 4, 5}; int *p = a; // same as int*p = &a[0] for(i = 0; i < 5; i++) { printf("%d", *p); p++; } return 0; }

उपरोक्त program में, pointer *p array में store सभी values को एक-एक करके प्रिंट करेगा। हम pointer के रूप में कार्य करने और सभी values को प्रिंट करने के लिए base addrress (उपरोक्त case में) का उपयोग कर सकते हैं।



एक arrey के साथ pointer का उपयोग करने के लिए generalized form

	
	
*(a+i)

is same as:

	
	
a[i]

Pointer to Multidimensional Array

a[i][j] एक Multidimensional Array रूप का है। आइए देखें कि हम इस तरह के ऐरे को पॉइंटर पॉइंट कैसे बना सकते हैं। जैसा कि हम अब जानते हैं, array a[i][j] इसका base address देता है। इस array का base address देगा, यहां तक कि एक +0 +0 भी base address देगा, जो एक [0][0] तत्व का address है।

यहाँ Multidimensional Arrays के साथ pointer का उपयोग करने के लिए सामान्यीकृत रूप है।

	
	
*(*(a + i) + j)
	

which is same as,

a[i][j]

Pointer and Character strings

स्ट्रिंग बनाने के लिए पॉइंटर का भी उपयोग किया जा सकता है। चार प्रकार के पॉइंटर variable को एक string के रूप में माना जाता है।

char *str = "Hello";

उपरोक्त कोड एक string बनाता है और पॉइंटर वेरिएबल str में अपना address स्टोर करता है। pointer str अब string "हैलो" के पहले character को point करता है। यहां ध्यान देने वाली एक और महत्वपूर्ण बात यह है कि चार पॉइंटर का उपयोग करके बनाई गई string को runtime पर एक मान assigned किया जा सकता है।

	
	
char *str str = "Hello"; //this is Legal

string की सामग्री को printf() और puts() का उपयोग करके प्रिंट किया जा सकता है।

	
	
printf("%s", str); puts(str);

ध्यान दें कि str एक pointer है, यह string का नाम भी है। इसलिए हमें ऑपरेटर * का उपयोग करने की आवश्यकता नहीं है।

Array of Pointers

ध्यान दें कि स्ट्रिंग स्ट्रिंग के लिए एक संकेतक है, यह स्ट्रिंग का नाम भी है। इसलिए हमें अप्रत्यक्ष ऑपरेटर * का उपयोग करने की आवश्यकता नहीं है।

	
	
char *name[3] = { "Adam", "chris", "Deniel" }; //Now lets see same array without using pointer char name[3][20] = { "Adam", "chris", "Deniel"};


दूसरे दृष्टिकोण में memory wastage अधिक होता है, इसलिए ऐसे मामलों में pointer का उपयोग करना पसंद किया जाता है।