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

From Vigyanwiki
(→‎घोषणा: modification)
Line 10: Line 10:


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


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


एक प्रकार को परिभाषित करता है, ''संदर्भित'' के रूप में <code>struसी t Aसी सी ount</code>. इस प्रकार का नया वेरिएबल बनाने के लिए हम लिख सकते हैं <code>struसी t Aसी सी ount myAसी सी ount;</code>
एक प्रकार को परिभाषित करता है, ''संदर्भित'' के रूप में स्ट्रुसी टी एसी सी काउंट। इस प्रकार का नया वेरिएबल बनाने के लिए हम लिख सकते हैं <code>स्ट्रुसी टी असी सी काउंट मायएसी सी काउंट;</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>मेरी ए सी सी काउंट. ए सी सी काउंट_नंबर</code>, और एक फ़्लोटिंग-पॉइंट घटक, द्वारा एक्सेस किया गया <code>मेरी ए सी सी काउंट.बैलेंसी ई</code>, इसके साथ ही <code>पहला नाम</code> और <code>उप-नाम</code> अवयव। ढांचा <code>मेरी ए.सी.सी आउंट</code> सभी चार मान शामिल हैं, और सभी चार क्षेत्रों को स्वतंत्र रूप से बदला जा सकता है।


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


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


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


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


नाम का एक चर <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 के बराबर
नाम का एक चर <code>वेग</code> के साथ <code>वेक्टर</code> समग्र प्रकार के रूप में घोषित किया जाएगा <code>वेक्टर वेग;</code> के सदस्य <code>वेग</code> डॉट नोटेशन का उपयोग करके एक्सेस किया जाएगा। उदाहरण के लिए, <code>वेग.x = 5;</code> सेट करेगा <code>x</code> का घटक <code>वेग</code> 5 के बराबर


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


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




Line 63: Line 64:


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


<वाक्यविन्यास प्रकाश लैंग = सी>संरचना ifoo_old_stub {
<वाक्यविन्यास प्रकाश लैंग = सी>संरचना ifoo_old_stub {
   लंबा एक्स, वाई;
   लंबा एक्स, वाई;रचना इफू_संस्करण_42
संरचना इफू_संस्करण_42
 
   लंबा एक्स, वाई, जेड;
   लंबा एक्स, वाई, जेड;
   नौकरानी का नाम;
   नौकरानी का नाम;

Revision as of 14:33, 11 March 2023

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

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

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

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

घोषणा

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

  संरचना खाता {
   इंट अकाउंट _नंबर;
   चार * पहला_नाम;
   चार * अंतिम_नाम;
   फ्लोट बैलेंस;
};

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

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

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

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

  इंट ए सी सी  अंक संख्या;
  चार * पहला_नाम;
  चार * अंतिम_नाम;
  फ्लोट बैलेंस;

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

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

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

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

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

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

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

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

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

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

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

तात्कालिकता

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


सदस्य पहुंच

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

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

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

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

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

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

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

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

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

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

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

}बिंदु;

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

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

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

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

यह भी देखें

संदर्भ

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