Introduction of Structure
Array में हम एक समान टाइप की वैल्यू को एक बेरी बल में स्टोर कर सकते हैं। यदि हम अलग अलग टाइप की वैल्यू बल में स्टोर करना चाहे तो इसके लिए स्ट्रक्चर का प्रयोग किया जाता है। उदाहरण के लिए यदि हमें एक कर्मचारी का नाम(करैक्टर एरे), फोन नंबर(करैक्टर एरे), तथा वेतन(इंटीजर) एक ही वेरिएबल में स्टोर करना है तो इसके लिए स्ट्रक्चर का प्रयोग किया जा सकता हैं। इस प्रकार के लॉजिकल रिलेटेड डाटा को FoxPro, Oracle आदि में रिकॉर्ड किया जाता है।
स्ट्रक्चर को डिफाइन करना
अन्य वेरी बलों की भांति स्ट्रक्चर को प्रयोग में लेने से पूर्व डिक्लेअर करना होता है। स्ट्रक्चर की सहायता से नया डाटा टाइप बनाया जा सकता है, इसीलिए इसे एब्स्ट्रेक्ट डाटा टाइप या यूजर डिफाइंड डाटा टाइप कहा जाता हैं।
स्ट्रक्चर को main() फंक्शन के अंदर या उससे पहले निम्न प्रकार से डिफाइन किया जा सकता है।
struct structure_name
{
data_type var_name; //member data
data_type var_name; //member data
_ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _
};
यदि स्ट्रक्चर को main() फंक्शन के पहले डिफाइन किया जाता है तो उसे पूरे प्रोग्राम में किसी भी फंक्शन द्वारा प्रयोग किया जा सकता है। वहीं यदि स्ट्रक्चर को किसी फंक्शन के अंदर डिफाइन किया जाता है तो उसका प्रयोग केवल उसे फंक्शन में किया जा सकता है। स्ट्रक्चर में प्रयोग किए गए विभिन्न वेरिएबलो को स्ट्रक्चर मेंबर या एलिमेंट का जाता है।
एक कर्मचारी का नाम, फोन नंबर, तथा वेतन स्टोर करने के लिए स्ट्रक्चर को निम्न प्रकार से डिफाइन किया जा सकता है:
ऊपर दिए गए उदाहरण में यह कहा जा सकता है कि emp नामक एक नया डाटा टाइप बना है, जिसके आधार पर नए वेरिएबल को डिक्लेअर किया जा सकता है। इस स्ट्रक्चर में name, phone, तथा sal नामक तीन मेंबर हैं। यह स्ट्रक्चर, मेमोरी में निम्नानुसार स्थान घेरेगा।
Define structure(स्ट्रक्चर वेरिएबल डिक्लेयर करना) :-
एक बार स्ट्रक्चर को डिफाइन कर देने के बाद उससे प्रयोग में लेने के लिए डिक्लेअर करना होता है। स्ट्रक्चर वेरिएबल को निम्न प्रकार से डिक्लेअर किया जाता है:
struct structure_name var1, var2, ........., varN;
या
struct structure_name
{
- - - - - - - - - - -
- - - - - - - - - - -
} var1, var2, ....., varN;
Example:-
typedef का प्रयोग
typedef का प्रयोग पहले से मौजूद किसी data type(डाटा टाइप) को नया नाम देने के लिए किया जाता हैं।
typedef का प्रयोग structure(स्ट्रक्चर) को भी नया नाम देने के लिए किया जा सकता है इसका प्रारूप निम्न प्रकार हैं।
किसी स्ट्रक्चर वेरिएबल को declare(डिक्लेअर) करने के लिए प्रयोग किए जाने वाला प्रारूप लंबा है। किंतु typedef के माध्यम से इस से छोटा और आसान बनाया जा सकता हैं:
उपरोक्त उदाहरण में typedef के माध्यम से निम्न प्रकार छोटा और आसान बनाया जा सकता है:
typedef struct emp employee;
employee e1, e2, e3;
........
employees e4;
एक बार struct emp को employee नया नाम देने के बाद उसके आगे के सभी डिक्लेरेशन में सिर्फ employee का प्रयोग पर्याप्त होता है।
Structure variable(स्ट्रक्चर वेरिएबल) में वैल्यू स्टोर करना
चूंकि structure(स्ट्रक्चर) में एक से अधिक वैल्यू स्टोर सकती है, अतः जब भी structure(स्ट्रक्चर) के किसी मेंबर को प्रयोग करना होता है तो मेंबर के नाम के साथ structure variable(स्ट्रक्चर वेरिएबल) का नाम भी प्रयोग किया जाता है। structure variable(स्ट्रक्चर वेरिएबल) में वैल्यू स्टोर कराने का प्रारूप निम्न प्रकार हैं:
structure_var_name.structure_member = value;
Exampl:-
Example:-
नीचे 👇 दिए गए उदाहरण में एक स्ट्रक्चर को डिफाइन करते हुए उसके आधार पर e नाम का वेरिएबल डिक्लेयर किया गया है। साथ ही साथ उसमें वैल्यू भी उसी समय दे दी गई हैं।
Output:-
Name: Mukesh
Phone: 9696454748
Salary: 85000
Explain Example:-
ऊपर👆 दिए गए उदाहरण में स्ट्रक्चर emp को main() फंक्शन के अंदर डिक्लेअर किया गया है, जिसके आधार पर एक वेरिएबल e डिक्लेअर करते हुए उसके विभिन्न मेंबर name, phone तथा sal में क्रमशः Mukesh, 9696454748 तथा 85000 वैल्यू स्टोर करवाई जा रही हैं। इन्हीं वैल्यू को printf() के माध्यम से वापस प्रिंट करवाया दिया गया हैं।
Example:-
नीचे 👇 दिए गए उदाहरण में दो अलग-अलग स्ट्रक्चर वेरिएबलो का प्रयोग किया गया हैं।
Output:-
Name: Mukesh
Phone: 78783423
Salary: 92000
Name: Ranjeet
Phone: 78986798
Salary: 70000
Explain Example:-
ऊपर 👆 दिए के उदाहरण में दो वेरिएबल e1 तथा e2 डिक्लेअर करते हुए उसके विभिन्न मेंबर में दो अलग-अलग व्यक्तियों से संबंधित वैल्यू स्टोर करवाई जा रही हैं। इन्हीं वैल्यूज को printf() के माध्यम से प्रिंट करवा दिया गया है।
Example:-
नीचे 👇 दिए गए उदाहरण में यूजर से वैल्यू लेते हुए उसे स्ट्रक्चर वेरिएबल में स्टोर करवाया गया हैं।
Output:-
Enter Employee Name: Mukesh
Enter Employee Phone No.: 8845654565
Enter Employee Salary: 98709
Employee Name: Mukesh
Employee Phone: 8845654565
Employee Salary: 98709
Explain Example:-
ऊपर दिए गए उदाहरण में वेरिएबल e को डिक्लेअर किया गया है किंतु साथ में इनिशियलाइज नहीं किया गया है। इस उदाहरण में इन्हें प्रारंभिक वैल्यू देने का कार्य scanf() के माध्यम से किया जा रहा हैं।
Array of Structure
(स्ट्रक्चर तथा एरे)
एक से अधिक कर्मचारियों के नाम, फोन नंबर, तथा वेतन को एक ही वेरिएबल में स्टोर करना हो तो ऐसी स्थिति में हम स्ट्रक्चर का Array(एरे) बना सकते हैं
Example:-
नीचे दिए गए उदाहरण में 5 कर्मचारियों के नाम, फोन नंबर, तथा वेतन को स्ट्रक्चर का Array(एरे) बनाकर स्टोर किया गया है।
Output:-
Enter Employee Name, Phone No., Salary: Mukesh 2354567856 98000
Enter Employee Name, Phone No., Salary: Rudara 9854459866 75000
Enter Employee Name, Phone No., Salary: Denny 9645786325 98000
Enter Employee Name, Phone No., Salary: Vicky 7898459812 58000
Enter Employee Name, Phone No., Salary: Niku 6354896523 65000
You Entered:-
Mukesh 2354567856 98000
Rudra 9854459866 75000
Denny 9645786325 98000
Vicky 7898459812 58000
Niku 6354896523 65000
Explain Example:-
ऊपर दिए गए स्ट्रक्चर वेरिएबल e को एक एरे के रूप में डिक्लेअर किया गया है। इसका आशय यह है कि इस वेरिएबल ही e में अलग-अलग व्यक्तियों के बारे में जानकारी स्टोर की जा सकती है। जानकारी स्टोर करने का कार्य प्रोग्राम में ही लूप चलाकर किया गया हैं। scanf() में प्रयुक्त e[c].name का आशय वेरिएबल e के एलिमेंट संख्या c का name हैं। इस प्रकार चूंकि लूप पांच बार चलेगा, अतः प्रत्येक बार अलग अगल एलिमेंट्स के लिए वैल्यू scan की जाएगी। इन्ही वैल्यू को वापस लूप चलाकर प्रिन्ट करवा दिया गया हैं।
0 Comments