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

From Vigyanwiki
Revision as of 18:59, 18 February 2023 by alpha>Indicwiki (Created page with "{{About|certain types in C/C++|the concept in general|Data type#Composite types}} {{More citations needed|date=May 2016}} कंप्यू...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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

सी/सी ++ संरचनाएं और कक्षाएं

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

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

घोषणा

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

उदाहरण के लिए: <वाक्यविन्यास प्रकाश लैंग = सी> संरचना खाता {

  int account_number;
  चार * पहला_नाम;
  चार * अंतिम_नाम;
  फ्लोट बैलेंस;

}; </वाक्यविन्यास हाइलाइट>

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

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

उदाहरण के लिए: <वाक्यविन्यास प्रकाश लैंग = सी> टाइपपीफ संरचना खाता_ {

  int account_number;
  चार * पहला_नाम;
  चार * अंतिम_नाम;
  फ्लोट बैलेंस;

} खाता; </वाक्यविन्यास हाइलाइट>

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

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

 फ्लोट एक्स;
 फ्लोट वाई;
 फ्लोट जेड;

}; </वाक्यविन्यास हाइलाइट>

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

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

 अहस्ताक्षरित int लाल;
 अहस्ताक्षरित int हरा;
 अहस्ताक्षरित int नीला;

}; </वाक्यविन्यास हाइलाइट>

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

 वेक्टर स्थिति;
 रंग का रंग;

}; </वाक्यविन्यास हाइलाइट>

तात्कालिकता

प्रकार का एक चर बनाएँ struct Vertex पहले के समान प्रारूप का उपयोग करना: Vertex v;


सदस्य पहुंच

के घटकों को मान असाइन करें v जैसे इतना:

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

आदिम उपप्रकार

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

<वाक्यविन्यास प्रकाश लैंग = सी> संरचना ifoo_old_stub {

  लंबा एक्स, वाई;

}; संरचना ifoo_version_42 {

  लंबा एक्स, वाई, जेड;
  नौकरानी का नाम;
  लंबा ए, बी, सी;

}; शून्य ऑपरेट_ऑन_इफू (संरचना ifoo_old_stub *); संरचना ifoo_version_42 एस; . . . ऑपरेट_ऑन_इफू (& एस); </वाक्यविन्यास हाइलाइट>

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

टाइप करें हस्ताक्षर

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

<वाक्यविन्यास प्रकाश लैंग = सी> टाइपपीफ संरचना {

   इंट एक्स;
   इंट वाई;

} बिंदु;

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

टाइपपीफ संरचना {

   बिंदु केंद्र;
   डबल त्रिज्या;
   मीट्रिक मीट्रिक;

} घेरा; </वाक्यविन्यास हाइलाइट>

यह भी देखें

संदर्भ

  1. Howe, Denis. "The Free On-line Dictionary of Computing". foldoc.org. Retrieved 6 February 2023.