कम्पोजिट डाटा टाइप: Difference between revisions

From Vigyanwiki
(→‎घोषणा: modificatiob)
Line 5: Line 5:
== सी/सी ++ संरचनाएं और कक्षाएं ==
== सी/सी ++ संरचनाएं और कक्षाएं ==
{{details|C++ classes}}
{{details|C++ classes}}
A <code>struct</code> C (प्रोग्रामिंग लैंग्वेज) और [[C++]] की एक समग्र प्रकार की धारणा है, एक डेटाटाइप जो लेबल किए गए फ़ील्ड या सदस्यों के एक निश्चित सेट की रचना करता है। के कारण ऐसा कहा जाता है <code>struct</code> कीवर्ड उन्हें घोषित करने में उपयोग किया जाता है, जो संरचना के लिए छोटा है या अधिक सटीक रूप से, उपयोगकर्ता-परिभाषित डेटा संरचना।{{Citation needed|reason=Please give a reliable source for this assertion.|date=March 2009}}
एक संरचना सी और [[C++|सी ++]] की समग्र प्रकार की धारणा है, एक डेटाटाइप जो लेबल किए गए फ़ील्ड या सदस्यों के एक निश्चित सेट को बनाता है। इसे इसलिए कहा जाता है क्योंकि उन्हें घोषित करने में उपयोग किए जाने वाले स्ट्रक्चर कीवर्ड, जो संरचना के लिए छोटा है या अधिक सटीक रूप से, उपयोगकर्ता-परिभाषित डेटा संरचना है। [उद्धरण वांछित]
सी ++ में, ए के बीच एकमात्र अंतर <code>struct</code> और एक वर्ग (कंप्यूटर विज्ञान) डिफ़ॉल्ट [[पहुंच स्तर]] है, जो कक्षाओं के लिए निजी और सार्वजनिक के लिए है <code>struct</code>एस।


ध्यान दें कि जबकि कक्षाएं और <code>class</code> [[कीवर्ड (कंप्यूटर प्रोग्रामिंग)]] सी ++ में पूरी तरह से नए थे, सी (प्रोग्रामिंग भाषा) में पहले से ही एक कच्चा प्रकार था <code>struct</code>एस। सभी उद्देश्यों और उद्देश्यों के लिए, सी ++ <code>struct</code>s, C का [[सुपरसेट]] बनाता है <code>struct</code>एस: वस्तुतः सभी मान्य सी <code>struct</code>एस वैध सी ++ हैं <code>struct</code>s समान शब्दार्थ के साथ।
सी ++ में, स्ट्रक्चर और क्लास के बीच एकमात्र अंतर डिफॉल्ट एक्सेस लेवल है, जो क्लास के लिए प्राइवेट और स्ट्रक्चर के लिए पब्लिक है। ध्यान दें कि सी  ++ में क्लासेस और क्लास [[कीवर्ड (कंप्यूटर प्रोग्रामिंग)]] पूरी तरह से नए थे, सी प्रोग्रामिंग लैंग्वेज में पहले से ही कच्चे प्रकार के स्ट्रक्चर थे। सभी इरादों और उद्देश्यों के लिए, सी ++ स्ट्रक्चर्स सी स्ट्रक्चर्स का एक [[सुपरसेट]] बनाते हैं: लगभग सभी मान्य सी स्ट्रक्चर्स एक ही शब्दार्थ के साथ मान्य सी ++ स्ट्रक्चर्स हैं।


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


उदाहरण के लिए:<वाक्यविन्यास प्रकाश लैंग = सी>संरचना खाता  
उदाहरण के लिए:<वाक्यविन्यास प्रकाश लैंग = सी>संरचना खाता  
   int account_number;
   int aसी सी ount_number;
   चार * पहला_नाम;
   चार * पहला_नाम;
   चार * अंतिम_नाम;
   चार * अंतिम_नाम;
Line 20: Line 19:
वाक्यविन्यास हाइलाइट
वाक्यविन्यास हाइलाइट


एक प्रकार को परिभाषित करता है, ''संदर्भित'' के रूप में <code>struct Account</code>. इस प्रकार का नया वेरिएबल बनाने के लिए हम लिख सकते हैं <code>struct Account myAccount;</code>
एक प्रकार को परिभाषित करता है, ''संदर्भित'' के रूप में <code>struसी t Aसी सी ount</code>. इस प्रकार का नया वेरिएबल बनाने के लिए हम लिख सकते हैं <code>struसी t Aसी सी ount myAसी सी ount;</code>
जिसमें एक पूर्णांक घटक है, जिसके द्वारा एक्सेस किया गया है <code>myAccount.account_number</code>, और एक फ़्लोटिंग-पॉइंट घटक, द्वारा एक्सेस किया गया <code>myAccount.balance</code>, इसके साथ ही <code>first_name</code> और <code>last_name</code> अवयव। ढांचा <code>myAccount</code> सभी चार मान शामिल हैं, और सभी चार क्षेत्रों को स्वतंत्र रूप से बदला जा सकता है।
जिसमें एक पूर्णांक घटक है, जिसके द्वारा एक्सेस किया गया है <code>myAसी सी ount.aसी सी ount_number</code>, और एक फ़्लोटिंग-पॉइंट घटक, द्वारा एक्सेस किया गया <code>myAसी सी ount.balanसी e</code>, इसके साथ ही <code>first_name</code> और <code>last_name</code> अवयव। ढांचा <code>myAसी सी ount</code> सभी चार मान शामिल हैं, और सभी चार क्षेत्रों को स्वतंत्र रूप से बदला जा सकता है।


लिखने के बाद से <code>struct Account</code> बार-बार कोड बोझिल हो जाता है, यह देखना असामान्य नहीं है <code>typedef</code> के लिए अधिक सुविधाजनक पर्यायवाची प्रदान करने के लिए C कोड में कथन <code>struct</code>. हालाँकि, कुछ{{who|date=October 2021}} प्रोग्रामिंग स्टाइल गाइड इसके खिलाफ सलाह देते हैं, यह दावा करते हुए कि यह प्रकार को अस्पष्ट कर सकता है।
लिखने के बाद से <code>struसी t Aसी सी ount</code> बार-बार कोड बोझिल हो जाता है, यह देखना असामान्य नहीं है <code>typedef</code> के लिए अधिक सुविधाजनक पर्यायवाची प्रदान करने के लिए सी  कोड में कथन <code>struसी t</code>. हालाँकि, कुछ{{who|date=October 2021}} प्रोग्रामिंग स्टाइल गाइड इसके खिलाफ सलाह देते हैं, यह दावा करते हुए कि यह प्रकार को अस्पष्ट कर सकता है।


उदाहरण के लिए:वाक्यविन्यास प्रकाश लैंग = सी>टाइपपीफ संरचना खाता
उदाहरण के लिए:वाक्यविन्यास प्रकाश लैंग = सी>टाइपपीफ संरचना खाता
   int account_number;
   int aसी सी ount_number;
   चार * पहला_नाम;
   चार * पहला_नाम;
   चार * अंतिम_नाम;
   चार * अंतिम_नाम;
Line 32: Line 31:
वाक्यविन्यास हाइलाइट
वाक्यविन्यास हाइलाइट


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


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


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


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


3डी ग्राफिक्स में, आपको आमतौर पर प्रत्येक शीर्ष की स्थिति और रंग दोनों का ट्रैक रखना चाहिए। ऐसा करने का एक तरीका एक बनाना होगा <code>Vertex</code> समग्र प्रकार, पहले बनाए गए का उपयोग कर <code>Vector</code> और <code>Color</code> समग्र प्रकार:
3डी ग्राफिक्स में, आपको आमतौर पर प्रत्येक शीर्ष की स्थिति और रंग दोनों का ट्रैक रखना चाहिए। ऐसा करने का एक तरीका एक बनाना होगा <code>Vertex</code> समग्र प्रकार, पहले बनाए गए का उपयोग कर <code>Veसी tor</code> और <code>सी olor</code> समग्र प्रकार:
<वाक्यविन्यास प्रकाश लैंग = सी>स्ट्रक्चर वर्टेक्स  
<वाक्यविन्यास प्रकाश लैंग = सी>स्ट्रक्चर वर्टेक्स  
   वेक्टर स्थिति;
   वेक्टर स्थिति;
Line 55: Line 54:
  वाक्यविन्यास हाइलाइट
  वाक्यविन्यास हाइलाइट
=== तात्कालिकता ===
=== तात्कालिकता ===
प्रकार का एक चर बनाएँ <code>struct Vertex</code> पहले के समान प्रारूप का उपयोग करना: <code>Vertex v;</code>
प्रकार का एक चर बनाएँ <code>struसी t Vertex</code> पहले के समान प्रारूप का उपयोग करना: <code>Vertex v;</code>




Line 64: Line 63:


=== आदिम उपप्रकार ===
=== आदिम उपप्रकार ===
का प्राथमिक उपयोग <code>struct</code> जटिल डेटाटाइप्स के निर्माण के लिए है, लेकिन कभी-कभी इसका उपयोग प्रिमिटिव [[संरचनात्मक प्रकार प्रणाली]] [[सबटाइपिंग]] बनाने के लिए किया जाता है। उदाहरण के लिए, चूंकि [[मानक सी]]{{Citation needed|date=July 2012}} आवश्यकता है कि यदि दो structs में एक ही प्रारंभिक फ़ील्ड हैं, तो उन फ़ील्ड को उसी तरह कोड में प्रदर्शित किया जाएगा
का प्राथमिक उपयोग <code>struसी t</code> जटिल डेटाटाइप्स के निर्माण के लिए है, लेकिन कभी-कभी इसका उपयोग प्रिमिटिव [[संरचनात्मक प्रकार प्रणाली]] [[सबटाइपिंग]] बनाने के लिए किया जाता है। उदाहरण के लिए, चूंकि [[मानक सी]]{{Citation needed|date=July 2012}} आवश्यकता है कि यदि दो struसी ts में एक ही प्रारंभिक फ़ील्ड हैं, तो उन फ़ील्ड को उसी तरह कोड में प्रदर्शित किया जाएगा


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

Revision as of 14:02, 11 March 2023

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

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

एक संरचना सी और सी ++ की समग्र प्रकार की धारणा है, एक डेटाटाइप जो लेबल किए गए फ़ील्ड या सदस्यों के एक निश्चित सेट को बनाता है। इसे इसलिए कहा जाता है क्योंकि उन्हें घोषित करने में उपयोग किए जाने वाले स्ट्रक्चर कीवर्ड, जो संरचना के लिए छोटा है या अधिक सटीक रूप से, उपयोगकर्ता-परिभाषित डेटा संरचना है। [उद्धरण वांछित]

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

घोषणा

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

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

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

वाक्यविन्यास हाइलाइट

एक प्रकार को परिभाषित करता है, संदर्भित के रूप में struसी t Aसी सी ount. इस प्रकार का नया वेरिएबल बनाने के लिए हम लिख सकते हैं struसी t Aसी सी ount myAसी सी ount; जिसमें एक पूर्णांक घटक है, जिसके द्वारा एक्सेस किया गया है myAसी सी ount.aसी सी ount_number, और एक फ़्लोटिंग-पॉइंट घटक, द्वारा एक्सेस किया गया myAसी सी ount.balanसी e, इसके साथ ही first_name और last_name अवयव। ढांचा myAसी सी ount सभी चार मान शामिल हैं, और सभी चार क्षेत्रों को स्वतंत्र रूप से बदला जा सकता है।

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

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

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

वाक्यविन्यास हाइलाइट

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

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

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

वाक्यविन्यास हाइलाइट

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

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

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

वाक्यविन्यास हाइलाइट

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

 वेक्टर स्थिति;
 रंग का रंग;
वाक्यविन्यास हाइलाइट

तात्कालिकता

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


सदस्य पहुंच

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

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

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

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

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

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

संरचना इफू_संस्करण_42

  लंबा एक्स, वाई, जेड;
  नौकरानी का नाम;
  लंबा ए, बी, सी;
शून्य ऑपरेट_ऑन_इफू (संरचना इफू_पुराना_स्टब *);
संरचना इफू_संस्करण_42 एस;
. . .
ऑपरेट_ऑन_इफू (& एस);
वाक्यविन्यास हाइलाइट

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

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

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

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

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

}बिंदु;

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

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

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

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

यह भी देखें

संदर्भ

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