कम्पोजिट डाटा टाइप

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

सी/सी ++ संरचनाएं और कक्षाएं
A  C (प्रोग्रामिंग लैंग्वेज) और C++ की एक समग्र प्रकार की धारणा है, एक डेटाटाइप जो लेबल किए गए फ़ील्ड या सदस्यों के एक निश्चित सेट की रचना करता है। के कारण ऐसा कहा जाता है   कीवर्ड उन्हें घोषित करने में उपयोग किया जाता है, जो संरचना के लिए छोटा है या अधिक सटीक रूप से, उपयोगकर्ता-परिभाषित डेटा संरचना। सी ++ में, ए के बीच एकमात्र अंतर  और एक वर्ग (कंप्यूटर विज्ञान) डिफ़ॉल्ट पहुंच स्तर है, जो कक्षाओं के लिए निजी और सार्वजनिक के लिए है  एस।

ध्यान दें कि जबकि कक्षाएं और  कीवर्ड (कंप्यूटर प्रोग्रामिंग) सी ++ में पूरी तरह से नए थे, सी (प्रोग्रामिंग भाषा) में पहले से ही एक कच्चा प्रकार था  एस। सभी उद्देश्यों और उद्देश्यों के लिए, सी ++  s, C का सुपरसेट बनाता है  एस: वस्तुतः सभी मान्य सी  एस वैध सी ++ हैं  s समान शब्दार्थ के साथ।

घोषणा
ए  घोषणा में फ़ील्ड की एक सूची होती है, जिनमें से प्रत्येक का कोई भी प्रकार हो सकता है। ए के लिए आवश्यक कुल भंडारण   वस्तु सभी क्षेत्रों की भंडारण आवश्यकताओं का योग है, साथ ही कोई भी आंतरिक डेटा संरचना संरेखण#डेटा संरचना पैडिंग।

उदाहरण के लिए: <वाक्यविन्यास प्रकाश लैंग = सी> संरचना खाता { int account_number; चार * पहला_नाम; चार * अंतिम_नाम; फ्लोट बैलेंस; }; 

एक प्रकार को परिभाषित करता है, संदर्भित के रूप में. इस प्रकार का नया वेरिएबल बनाने के लिए हम लिख सकते हैं जिसमें एक पूर्णांक घटक है, जिसके द्वारा एक्सेस किया गया है, और एक फ़्लोटिंग-पॉइंट घटक, द्वारा एक्सेस किया गया  , इसके साथ ही   और   अवयव। ढांचा   सभी चार मान शामिल हैं, और सभी चार क्षेत्रों को स्वतंत्र रूप से बदला जा सकता है।

लिखने के बाद से  बार-बार कोड बोझिल हो जाता है, यह देखना असामान्य नहीं है   के लिए अधिक सुविधाजनक पर्यायवाची प्रदान करने के लिए C कोड में कथन. हालाँकि, कुछ प्रोग्रामिंग स्टाइल गाइड इसके खिलाफ सलाह देते हैं, यह दावा करते हुए कि यह प्रकार को अस्पष्ट कर सकता है।

उदाहरण के लिए: <वाक्यविन्यास प्रकाश लैंग = सी> टाइपपीफ संरचना खाता_ { int account_number; चार * पहला_नाम; चार * अंतिम_नाम; फ्लोट बैलेंस; } खाता; 

सी ++ कोड में, टाइपपीफ | की आवश्यकता नहीं है क्योंकि प्रकार का उपयोग करके परिभाषित किया गया है  पहले से ही नियमित नाम स्थान का हिस्सा हैं, इसलिए प्रकार को या तो कहा जा सकता है   या केवल.

एक अन्य उदाहरण के रूप में, एक त्रि-आयामी वेक्टर समग्र प्रकार जो फ़्लोटिंग पॉइंट डेटा प्रकार का उपयोग करता है, इसके साथ बनाया जा सकता है: <वाक्यविन्यास प्रकाश लैंग = सी> संरचना वेक्टर { फ्लोट एक्स; फ्लोट वाई; फ्लोट जेड; }; 

नाम का एक चर  के साथ   समग्र प्रकार के रूप में घोषित किया जाएगा   के सदस्य   डॉट नोटेशन का उपयोग करके एक्सेस किया जाएगा। उदाहरण के लिए,   सेट करेगा   का घटक   5 के बराबर

इसी तरह, एक रंग संरचना का उपयोग करके बनाया जा सकता है: <वाक्यविन्यास प्रकाश लैंग = सी> संरचना का रंग { अहस्ताक्षरित int लाल; अहस्ताक्षरित int हरा; अहस्ताक्षरित int नीला; }; 

3डी ग्राफिक्स में, आपको आमतौर पर प्रत्येक शीर्ष की स्थिति और रंग दोनों का ट्रैक रखना चाहिए। ऐसा करने का एक तरीका एक बनाना होगा  समग्र प्रकार, पहले बनाए गए का उपयोग कर   और   समग्र प्रकार: <वाक्यविन्यास प्रकाश लैंग = सी> स्ट्रक्चर वर्टेक्स { वेक्टर स्थिति; रंग का रंग; }; 

तात्कालिकता
प्रकार का एक चर बनाएँ  पहले के समान प्रारूप का उपयोग करना:

सदस्य पहुंच
के घटकों को मान असाइन करें  जैसे इतना:

<वाक्यविन्यास प्रकाश लैंग = सी> वी.पोजिशन.एक्स = 0.0; वी.पोजिशन.वाई = 1.5; वी.पोजिशन.जेड = 0.0; v.color.red = 128; v.color.green = 0; v.color.blue = 255; 

आदिम उपप्रकार
का प्राथमिक उपयोग  जटिल डेटाटाइप्स के निर्माण के लिए है, लेकिन कभी-कभी इसका उपयोग प्रिमिटिव संरचनात्मक प्रकार प्रणाली सबटाइपिंग बनाने के लिए किया जाता है। उदाहरण के लिए, चूंकि मानक सी आवश्यकता है कि यदि दो structs में एक ही प्रारंभिक फ़ील्ड हैं, तो उन फ़ील्ड को उसी तरह कोड में प्रदर्शित किया जाएगा

<वाक्यविन्यास प्रकाश लैंग = सी> संरचना ifoo_old_stub { लंबा एक्स, वाई; }; संरचना ifoo_version_42 { लंबा एक्स, वाई, जेड; नौकरानी का नाम; लंबा ए, बी, सी; }; शून्य ऑपरेट_ऑन_इफू (संरचना ifoo_old_stub *); संरचना ifoo_version_42 एस; . . . ऑपरेट_ऑन_इफू (& एस); 

सही ढंग से काम करेगा।

टाइप करें हस्ताक्षर
प्रकार के हस्ताक्षर (या फ़ंक्शन प्रकार) आदिम और समग्र प्रकारों से निर्मित होते हैं, और समग्र प्रकारों का निर्माण करते समय स्वयं प्रकार के रूप में काम कर सकते हैं:

<वाक्यविन्यास प्रकाश लैंग = सी> टाइपपीफ संरचना { इंट एक्स; इंट वाई; } बिंदु;

टाइपपीफ डबल (* मैट्रिक) (प्वाइंट पी 1, प्वाइंट पी 2);

टाइपपीफ संरचना { बिंदु केंद्र; डबल त्रिज्या; मीट्रिक मीट्रिक; } घेरा; 

यह भी देखें

 * वस्तु रचना
 * संरचना (सी प्रोग्रामिंग भाषा)
 * अदिश (गणित)