C संरचना और संकेत (उदाहरण के साथ)

इस ट्यूटोरियल में, आप C प्रोग्रामिंग में स्ट्रक्चर्स के सदस्यों तक पहुँचने के लिए पॉइंटर्स का उपयोग करना सीखेंगे। आप गतिशील प्रकार की स्मृति को गतिशील रूप से आवंटित करना भी सीखेंगे।

इससे पहले कि आप इस बात को जानें कि कैसे संरक्षकों के साथ पॉइंटर्स का उपयोग किया जा सकता है, इन ट्यूटोरियल्स की जाँच अवश्य करें:

  • C पॉइंटर्स
  • C संरचना

C पॉइंटर्स टू स्ट्रक्चर

यहाँ बताया गया है कि आप किस तरह से संरचनों की ओर संकेत कर सकते हैं।

 struct name ( member1; member2;… ); int main() ( struct name *ptr, Harry; )

यहाँ, ptr एक सूचक है struct

उदाहरण: पॉइंटर का उपयोग करने वाले सदस्य

पॉइंटर्स का उपयोग करके एक संरचना के सदस्यों तक पहुंचने के लिए, हम ->ऑपरेटर का उपयोग करते हैं ।

 #include struct person ( int age; float weight; ); int main() ( struct person *personPtr, person1; personPtr = &person1; printf("Enter age: "); scanf("%d", &personPtr->age); printf("Enter weight: "); scanf("%f", &personPtr->weight); printf("Displaying:"); printf("Age: %d", personPtr->age); printf("weight: %f", personPtr->weight); return 0; )

इस उदाहरण में, person1 का पता का उपयोग करके personPtr सूचक में संग्रहीत किया जाता है personPtr = &person1;

अब, आप personPtrसूचक का उपयोग करके person1 के सदस्यों तक पहुंच सकते हैं ।

वैसे,

  • personPtr->age के बराबर है (*personPtr).age
  • personPtr->weight के बराबर है (*personPtr).weight

संरचनाओं का गतिशील मेमोरी आवंटन

इस अनुभाग को आगे बढ़ाने से पहले, हम आपको C गतिशील मेमोरी आवंटन की जाँच करने की सलाह देते हैं।

कभी-कभी, आपके द्वारा घोषित किए गए संरचनात्मक चर की संख्या अपर्याप्त हो सकती है। रन-टाइम के दौरान आपको मेमोरी आवंटित करने की आवश्यकता हो सकती है। यहां बताया गया है कि सी प्रोग्रामिंग में आप इसे कैसे हासिल कर सकते हैं।

उदाहरण: डायनामिक मेमोरी आवंटन ऑफ स्ट्रक्चर्स

 #include #include struct person ( int age; float weight; char name(30); ); int main() ( struct person *ptr; int i, n; printf("Enter the number of persons: "); scanf("%d", &n); // allocating memory for n numbers of struct person ptr = (struct person*) malloc(n * sizeof(struct person)); for(i = 0; i name and ptr->age is used // To access members of 2nd struct person, // (ptr+1)->name and (ptr+1)->age is used scanf("%s %d", (ptr+i)->name, &(ptr+i)->age); ) printf("Displaying Information:"); for(i = 0; i name, (ptr+i)->age); return 0; ) 

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

 व्यक्तियों की संख्या दर्ज करें: 2 क्रमशः पहला नाम और आयु दर्ज करें: हैरी 24 पहले नाम और आयु दर्ज करें: गैरी 32 प्रदर्शित जानकारी: नाम: हैरी आयु: 24 नाम: गैरी आयु: 32

उपर्युक्त उदाहरण में, n विभिन्न प्रकार के चर बनाए जाते हैं जहां n उपयोगकर्ता द्वारा प्रविष्ट किया जाता है।

N की संरचना वाले व्यक्ति की स्मृति को आवंटित करने के लिए, हमने उपयोग किया,

 ptr = (struct person*) malloc(n * sizeof(struct person));

फिर, हमने व्यक्ति के तत्वों को एक्सेस करने के लिए ptr पॉइंटर का उपयोग किया।

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