C++ उदाहरण सहित संरचना

स्ट्रक्चर क्या है? C++?

A struct एक C++ डेटा संरचना जिसका उपयोग विभिन्न डेटा प्रकारों के तत्वों को एक साथ संग्रहीत करने के लिए किया जा सकता है। C++, संरचना एक उपयोगकर्ता-परिभाषित डेटा प्रकार है। संरचना एक ही डेटा प्रकार के अंतर्गत विभिन्न डेटा प्रकारों के आइटम को समूहीकृत करने के लिए एक डेटा प्रकार बनाती है।

उदाहरण के लिए:

मान लीजिए आपको किसी व्यक्ति के बारे में जानकारी संग्रहीत करने की आवश्यकता है, जैसे कि उसका नाम, नागरिकता और आयु। आप डेटा को अलग-अलग संग्रहीत करने के लिए नाम, नागरिकता और आयु जैसे चर बना सकते हैं।

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

संरचना का उपयोग कब करें?

संरचना का उपयोग करने के कुछ कारण यहां दिए गए हैं C++.

  • जब आपको विभिन्न डेटा प्रकारों के तत्वों को एक डेटा प्रकार के अंतर्गत संग्रहीत करने की आवश्यकता हो तो स्ट्रक्चर का उपयोग करें।
  • C++ स्ट्रक्चर एक संदर्भ प्रकार होने के बजाय एक मूल्य प्रकार है। यदि आप निर्माण के बाद अपने डेटा को संशोधित नहीं करना चाहते हैं तो स्ट्रक्चर का उपयोग करें।

C++ संरचना आरंभीकरण

बनाने के लिए C++ संरचना में, हम स्ट्रक्चर कीवर्ड का उपयोग करते हैं, उसके बाद एक पहचानकर्ता। पहचानकर्ता संरचना का नाम बन जाता है। यहाँ एक संरचना बनाने के लिए सिंटैक्स है C++ संरचना:

सिंटेक्स:

struct struct_name  
{  
     // struct members
}   

उपरोक्त सिंटैक्स में, हमने struct कीवर्ड का उपयोग किया है। struct_name संरचना का नाम है।

स्ट्रक्चर सदस्यों को कर्ली ब्रेसेज़ के भीतर जोड़ा जाता है। ये सदस्य संभवतः अलग-अलग डेटा प्रकारों से संबंधित होते हैं।

उदाहरण के लिए:

struct Person  
{  
    char name[30];  
     int citizenship;  
     int age;  
}  

उपरोक्त उदाहरण में, व्यक्ति तीन सदस्यों वाली एक संरचना है। सदस्यों में नाम, नागरिकता और आयु शामिल हैं। एक सदस्य char डेटा प्रकार का है, जबकि शेष 2 पूर्णांक हैं जब एक संरचना बनाई जाती है, तो मेमोरी आवंटित नहीं की जाती है। मेमोरी केवल तभी आवंटित की जाती है जब संरचना में एक चर जोड़ा जाता है।

स्ट्रक्चर इंस्टैंस बनाना

उपरोक्त उदाहरण में, हमने Person नाम से एक struct बनाया है। हम निम्न प्रकार से एक struct variable बना सकते हैं:

Person p;

p एक स्ट्रक्चर वैरिएबल है जिसका प्रकार Person है। हम इस वैरिएबल का उपयोग स्ट्रक्चर के सदस्यों तक पहुँचने के लिए कर सकते हैं।

स्ट्रक्चर सदस्यों तक पहुँचना

स्ट्रक्चर सदस्यों तक पहुँचने के लिए, हम स्ट्रक्चर के इंस्टेंस और डॉट (.) ऑपरेटर का उपयोग करते हैं। उदाहरण के लिए, स्ट्रक्चर पर्सन के सदस्य की आयु तक पहुँचने के लिए:

p.age = 27;

हमने स्ट्रक्चर के इंस्टेंस, p का उपयोग करके स्ट्रक्चर Person के सदस्य की आयु तक पहुँच प्राप्त कर ली है। फिर हमने सदस्य की आयु का मान 27 पर सेट कर दिया है।

उदाहरण 1:

#include <iostream>    
using namespace std;
struct Person
{
	int citizenship;
	int age;
};
int main(void) {
	struct Person p;
	p.citizenship = 1;
	p.age = 27;
	cout << "Person citizenship: " << p.citizenship << endl;
	cout << "Person age: " << p.age << endl;

	return 0;
}

आउटपुट:

स्ट्रक्चर सदस्यों तक पहुँचना

कोड का स्क्रीनशॉट यहां दिया गया है:

स्ट्रक्चर सदस्यों तक पहुँचना

कोड स्पष्टीकरण:

  1. इसमें परिभाषित फ़ंक्शन का उपयोग करने के लिए हमारे प्रोग्राम में iostream हेडर फ़ाइल शामिल करें।
  2. std नामस्थान को शामिल करें ताकि उसे कॉल किए बिना उसकी कक्षाओं का उपयोग किया जा सके।
  3. Person नाम से एक स्ट्रक्चर बनाएं.
  4. संरचना निकाय की शुरुआत.
  5. पूर्णांक प्रकार का नागरिकता नामक एक संरचना सदस्य बनाएँ।
  6. पूर्णांक प्रकार का age नामक एक struct सदस्य बनाएं.
  7. संरचना निकाय का अंत.
  8. main() फ़ंक्शन को कॉल करें। प्रोग्राम लॉजिक को इस फ़ंक्शन के मुख्य भाग में जोड़ा जाना चाहिए।
  9. स्ट्रक्चर पर्सन का एक उदाहरण बनाएं और इसे p नाम दें।
  10. संरचना सदस्य नागरिकता का मान 1 पर सेट करें.
  11. संरचना सदस्य की आयु का मान 27 पर सेट करें।
  12. कंसोल पर स्ट्रक्चर सदस्य नागरिकता का मान कुछ अन्य पाठ के साथ प्रिंट करें।
  13. कंसोल पर स्ट्रक्चर सदस्य आयु का मान कुछ अन्य पाठ के साथ प्रिंट करें।
  14. यदि प्रोग्राम सफलतापूर्वक चलता है तो उसे एक मान लौटाना चाहिए।
  15. main() फ़ंक्शन का अंत.

संरचना के लिए संकेत

एक पॉइंटर बनाना संभव है जो किसी संरचना की ओर इशारा करता है। यह उसी तरह है जैसे int, float, double, आदि जैसे मूल डेटा प्रकारों की ओर इशारा करने वाले पॉइंटर बनाए जाते हैं। ध्यान दें कि एक पॉइंटर C++ एक स्मृति स्थान संग्रहीत करेगा.

उदाहरण 2:

#include <iostream>
using namespace std;

struct Length
{
	int meters;
	float centimeters;
};

int main()
{
	Length *ptr, l;

	ptr = &l;

	cout << "Enter meters: ";
	cin >> (*ptr).meters;
	cout << "Enter centimeters: ";
	cin >> (*ptr).centimeters;
	cout << "Length = " << (*ptr).meters << " meters " << (*ptr).centimeters << " centimeters";

	return 0;
}

आउटपुट:

संरचना के लिए संकेत

कोड का स्क्रीनशॉट यहां दिया गया है:

संरचना के लिए संकेत

कोड स्पष्टीकरण:

  1. इसके कार्यों का उपयोग करने के लिए अपने प्रोग्राम में iostream हेडर फ़ाइल शामिल करें।
  2. अपने प्रोग्राम में std नामस्थान को शामिल करें ताकि उसे कॉल किए बिना उसकी कक्षाओं का उपयोग किया जा सके।
  3. Length नामक एक स्ट्रक्चर बनाएं.
  4. संरचना के मुख्य भाग की शुरुआत लंबाई.
  5. पूर्णांक डेटा प्रकार का मीटर नामक एक संरचना सदस्य बनाएँ।
  6. सेंटीमीटर नामक पूर्णांक प्रकार का एक स्ट्रक्चर सदस्य बनाएं।
  7. संरचना के मुख्य भाग का अंत लंबाई.
  8. main() फ़ंक्शन को कॉल करें.
  9. main() फ़ंक्शन के मुख्य भाग का प्रारंभ.
  10. Length प्रकार का एक पॉइंटर वेरिएबल *ptr और सामान्य वेरिएबल l बनाएँ।
  11. चर l का पता हमारे में संग्रहीत करें सूचक चर.
  12. कंसोल पर एक संदेश प्रदर्शित करें, जिसमें उपयोगकर्ता को परिवर्तनीय मीटर के लिए मान दर्ज करने के लिए कहा जाएगा।
  13. कीबोर्ड के माध्यम से उपयोगकर्ता द्वारा दर्ज किए गए मान को पढ़ें। सदस्य फ़ंक्शन मीटर को पॉइंटर वैरिएबल का उपयोग करके एक्सेस किया जाता है।
  14. कंसोल पर एक संदेश प्रदर्शित करें, जिसमें उपयोगकर्ता को परिवर्तनीय सेंटीमीटर का मान दर्ज करने के लिए कहा जाए।
  15. कीबोर्ड के माध्यम से उपयोगकर्ता द्वारा दर्ज किए गए मान को पढ़ें। सदस्य फ़ंक्शन सेंटीमीटर को पॉइंटर वैरिएबल का उपयोग करके एक्सेस किया जाता है।
  16. कंसोल पर उपयोगकर्ता से पढ़े गए मानों को अन्य पाठ के साथ प्रदर्शित करें।
  17. प्रोग्राम को सफल निष्पादन पर एक मान लौटाना होगा।
  18. main() फ़ंक्शन के मुख्य भाग का अंत.

फ़ंक्शन तर्क के रूप में संरचना

आप स्ट्रक्चर को किसी फ़ंक्शन में तर्क के रूप में पास कर सकते हैं। यह सामान्य तर्क को पास करने के समान ही किया जाता है। स्ट्रक्चर वैरिएबल को भी फ़ंक्शन में पास किया जा सकता है। एक अच्छा उदाहरण तब होता है जब आपको स्ट्रक्चर सदस्यों के मान प्रदर्शित करने की आवश्यकता होती है। आइए इसे प्रदर्शित करते हैं:

उदाहरण 3:

#include<iostream>
using namespace std;

struct Person
{
	int citizenship;
	int age;
};

void func(struct Person p);

int main()
{
	struct Person p;

	p.citizenship = 1;
	p.age = 27;

	func(p);
	return 0;
}
void func(struct Person p)
{
	cout << " Person citizenship: " << p.citizenship<<endl;
	cout << " Person age: " << p.age;
}

आउटपुट:

फ़ंक्शन तर्क के रूप में संरचना

कोड का स्क्रीनशॉट यहां दिया गया है:

फ़ंक्शन तर्क के रूप में संरचना

कोड स्पष्टीकरण:

  1. हमारी फ़ाइल में iostream हेडर फ़ाइल शामिल करें। फिर हम बिना किसी त्रुटि के इसके फ़ंक्शन का उपयोग करेंगे।
  2. अपने प्रोग्राम में std नामस्थान को शामिल करें ताकि इसकी कक्षाओं का उपयोग किया जा सके। हमें इसकी कक्षाओं का उपयोग करने के लिए नामस्थान को कॉल करने की आवश्यकता नहीं होगी।
  3. Person नाम से एक स्ट्रक्चर बनाएं.
  4. संरचना व्यक्ति के शरीर का प्रारंभ.
  5. स्ट्रक्चर पर्सन का एक सदस्य बनाएँ। सदस्य का नाम नागरिकता है और वह पूर्णांक प्रकार का है।
  6. स्ट्रक्चर पर्सन का एक सदस्य बनाएँ। सदस्य का नाम आयु है और वह पूर्णांक प्रकार का है।
  7. संरचना व्यक्ति के शरीर का अंत.
  8. एक फ़ंक्शन बनाएं जो struct Person, p, के उदाहरण को तर्क के रूप में लेता है।
  9. मुख्य फ़ंक्शन को कॉल करें। { main() फ़ंक्शन के मुख्य भाग की शुरुआत को चिह्नित करता है।
  10. struct Person का एक उदाहरण बनाएं और इसे p नाम दें।
  11. संरचना p के उदाहरण का उपयोग करके संरचना सदस्य चर नागरिकता तक पहुंचें और इसे मान 1 निर्दिष्ट करें।
  12. स्ट्रक्चर के उदाहरण p का उपयोग करके तथा उसे मान 27 निर्दिष्ट करके स्ट्रक्चर सदस्य चर आयु तक पहुंचें।
  13. फ़ंक्शन को कॉल करें और इसमें स्ट्रक्चर पर्सन, p, का उदाहरण तर्क के रूप में पास करें।
  14. सफल निष्पादन पर फ़ंक्शन को एक मान लौटाना होगा.
  15. main() फ़ंक्शन के मुख्य भाग का अंत.
  16. फ़ंक्शन का मुख्य भाग बनाएँ.
  17. फ़ंक्शन के मुख्य भाग का प्रारंभ.
  18. स्ट्रक्चर सदस्य नागरिकता मान तक पहुंचें और इसे अन्य पाठ के साथ कंसोल पर प्रिंट करें।
  19. स्ट्रक्चर सदस्य की आयु मान तक पहुंचें और इसे अन्य पाठ के साथ कंसोल पर प्रिंट करें।
  20. फ़ंक्शन बॉडी का अंत.

सीमा C++ संरचना

संरचनाओं की सीमाएँ निम्नलिखित हैं:

  • स्ट्रक्चर डेटा प्रकार को अंतर्निहित डेटा प्रकारों की तरह नहीं माना जा सकता।
  • Opera+ -, और अन्य जैसे टॉर्स का उपयोग नहीं किया जा सकता है संरचना चर.
  • संरचनाएं डेटा छिपाने का समर्थन नहीं करती हैं। किसी संरचना के सदस्यों को उसके दायरे की परवाह किए बिना किसी भी फ़ंक्शन द्वारा एक्सेस किया जा सकता है।
  • स्थैतिक सदस्यों को संरचना निकाय के अंदर घोषित नहीं किया जा सकता।
  • किसी संरचना के अंदर कन्स्ट्रक्टर्स का निर्माण नहीं किया जा सकता।

सारांश

  • स्ट्रक्चर एक डेटा संरचना है जो विभिन्न प्रकार के डेटा तत्वों को संग्रहीत करती है।
  • जहाँ एक सारणी समान प्रकार के डेटा तत्वों को संग्रहीत करती है, वहीं एक संरचना विभिन्न प्रकार के डेटा तत्वों को संग्रहीत करती है।
  • स्ट्रक्चर का उपयोग तब किया जाना चाहिए जब डेटा तत्वों के मान में परिवर्तन की अपेक्षा न हो।
  • किसी स्ट्रक्चर के सदस्यों तक डॉट (.) ऑपरेटर का उपयोग करके पहुँचा जाता है।
  • हमें स्ट्रक्चर का एक उदाहरण बनाना है।
  • बनाने के लिए C++ struct में, हम struct कीवर्ड का उपयोग करते हैं।
  • किसी संरचना की ओर इंगित करने वाले पॉइंटर्स उसी प्रकार बनाए जाते हैं, जिस प्रकार नियमित प्रकारों की ओर इंगित करने वाले पॉइंटर्स बनाए जाते हैं।
  • किसी फ़ंक्शन में स्ट्रक्चर को तर्क के रूप में उसी प्रकार पास किया जा सकता है जिस प्रकार सामान्य फ़ंक्शन को पास किया जाता है।