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

From Vigyanwiki
No edit summary
 
(13 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{About|certain types in [[C (programming language)|C]]/[[C++]]|the concept in general|Data type#Composite types}}
{{About|certain types in [[C (programming language)|C]]/[[C++]]|the concept in general|डाटा टाइप #कम्पोजिट टाइप्स}}
{{More citations needed|date=May 2016}}
[[कंप्यूटर विज्ञान]] में, एक समग्र [[डेटा प्रकार]] या यौगिक डेटा प्रकार कोई भी डेटा प्रकार होता है जिसे [[प्रोग्रामिंग भाषा]] के [[आदिम डेटा प्रकार]]ों और अन्य मिश्रित प्रकारों का उपयोग करके एक प्रोग्राम में बनाया जा सकता है। इसे कभी-कभी संरचना या समग्र डेटा प्रकार कहा जाता है,<ref>{{cite web|last1=Howe|first1=Denis|title=The Free On-line Dictionary of Computing|url=http://foldoc.org/aggregate%20type|website=foldoc.org|accessdate=6 February 2023}}</ref> हालाँकि बाद वाला शब्द ऐरे डेटा प्रकार, [[सूची (सार डेटा प्रकार)]], आदि को भी संदर्भित कर सकता है। एक समग्र प्रकार के निर्माण के कार्य को वस्तु संरचना के रूप में जाना जाता है। समग्र डेटा प्रकार अक्सर स्केलर [[चर (कंप्यूटर विज्ञान)]] के विपरीत होते हैं।


== सी/सी ++ संरचनाएं और कक्षाएं ==
[[कंप्यूटर विज्ञान]] में, एक समग्र [[डेटा प्रकार]] या यौगिक डेटा प्रकार कोई भी डेटा प्रकार होता है जिसे [[प्रोग्रामिंग भाषा]] के [[आदिम डेटा प्रकार]] और अन्य मिश्रित प्रकारों का उपयोग करके एक प्रोग्राम में बनाया जा सकता है। इसे कभी-कभी संरचना या समग्र डेटा प्रकार कहा जाता है,<ref>{{cite web|last1=Howe|first1=Denis|title=The Free On-line Dictionary of Computing|url=http://foldoc.org/aggregate%20type|website=foldoc.org|accessdate=6 February 2023}}</ref> हालाँकि बाद वाला शब्द ऐरे डेटा प्रकार, [[सूची (सार डेटा प्रकार)]], आदि को भी संदर्भित कर सकता है। एक समग्र प्रकार के निर्माण के कार्य को वस्तु संरचना के रूप में जाना जाता है। समग्र डेटा प्रकार  प्रायः  स्केलर [[चर (कंप्यूटर विज्ञान)]] के विपरीत होते हैं।
{{details|C++ classes}}
एक संरचना सी और [[C++|सी ++]] की समग्र प्रकार की धारणा है, एक डेटाटाइप जो लेबल किए गए फ़ील्ड या सदस्यों के एक निश्चित सेट को बनाता है। इसे इसलिए कहा जाता है क्योंकि उन्हें घोषित करने में उपयोग किए जाने वाले स्ट्रक्चर कीवर्ड, जो संरचना के लिए छोटा है या अधिक सटीक रूप से, उपयोगकर्ता-परिभाषित डेटा संरचना है। [उद्धरण वांछित]


सी ++ में, स्ट्रक्चर और क्लास के बीच एकमात्र अंतर डिफॉल्ट एक्सेस लेवल है, जो क्लास के लिए प्राइवेट और स्ट्रक्चर के लिए पब्लिक है। ध्यान दें कि सी  ++ में क्लासेस और क्लास [[कीवर्ड (कंप्यूटर प्रोग्रामिंग)]] पूरी तरह से नए थे, सी  प्रोग्रामिंग लैंग्वेज में पहले से ही कच्चे प्रकार के स्ट्रक्चर थे। सभी इरादों और उद्देश्यों के लिए, सी ++ स्ट्रक्चर्स सी स्ट्रक्चर्स का एक [[सुपरसेट]] बनाते हैं: लगभग सभी मान्य सी स्ट्रक्चर्स एक ही शब्दार्थ के साथ मान्य सी ++ स्ट्रक्चर्स हैं।
== C/C ++ संरचनाएं और क्लासेज ==
{{details|C++ क्लासेज}}
एक संरचना सी और [[C++]] की समग्र प्रकार की धारणा है, एक डेटाटाइप जो लेबल किए गए फ़ील्ड या सदस्यों के एक निश्चित सेट को बनाता है। इसे इसलिए कहा जाता है क्योंकि उन्हें घोषित करने में उपयोग किए जाने वाले स्ट्रक्चर कीवर्ड, जो संरचना के लिए छोटा है या अधिक सटीक रूप से, उपयोगकर्ता-परिभाषित डेटा संरचना है। [उद्धरण वांछित]
 
C++ में, स्ट्रक्चर और क्लास के बीच एकमात्र अंतर डिफॉल्ट एक्सेस लेवल है, जो क्लास के लिए प्राइवेट और स्ट्रक्चर के लिए पब्लिक है। ध्यान दें कि C++ में क्लासेस और क्लास [[कीवर्ड (कंप्यूटर प्रोग्रामिंग)]] पूरी तरह से नए थे, सी  प्रोग्रामिंग लैंग्वेज में पहले से ही कच्चे प्रकार के स्ट्रक्चर थे। सभी इरादों और उद्देश्यों के लिए, C++ स्ट्रक्चर्स सी स्ट्रक्चर्स का एक [[सुपरसेट]] बनाते हैं: लगभग सभी मान्य सी स्ट्रक्चर्स एक ही शब्दार्थ के साथ मान्य C++ स्ट्रक्चर्स हैं।


=== घोषणा ===
=== घोषणा ===
ए <code>struसी t</code> घोषणा में फ़ील्ड की एक सूची होती है, जिनमें से प्रत्येक का कोई भी प्रकार हो सकता है। के लिए आवश्यक कुल भंडारण <code>struसी t</code> वस्तु सभी क्षेत्रों की भंडारण आवश्यकताओं का योग है, साथ ही कोई भी आंतरिक डेटा संरचना संरेखण # डेटा संरचना पैडिंग।
एक संरचना घोषणा में फ़ील्ड की एक सूची होती है, जिनमें से प्रत्येक का कोई भी प्रकार हो सकता है। किसी स्ट्रक्चर ऑब्जेक्ट के लिए आवश्यक कुल संग्रहण सभी फ़ील्ड्स की संग्रहण आवश्यकताओं के योग के साथ-साथ किसी भी आंतरिक पैडिंग का योग होता है।
उदाहरण के लिए:
<syntaxhighlight lang="c">
struct Account {
  int account_number;
  char *first_name;
  char *last_name;
  float balance;
};
</syntaxhighlight>


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


एक प्रकार को परिभाषित करता है, ''संदर्भित'' के रूप में <code>struसी t Aसी सी ount</code>. इस प्रकार का नया वेरिएबल बनाने के लिए हम लिख सकते हैं <code>struसी t Aसी सी ount myAसी सी ount;</code>
लिखने के बाद से <code>स्ट्रुसी टी एसी सी काउंट</code> बार-बार कोड बोझिल हो जाता है, यह देखना असामान्य नहीं है <code>टीपेडेफ</code> के लिए अधिक सुविधाजनक पर्यायवाची प्रदान करने के लिए सी  कोड में कथन <code>स्ट्रुसी टी</code>. हालाँकि, कुछ{{who|date=October 2021}} प्रोग्रामिंग स्टाइल गाइड इसके खिलाफ सलाह देते हैं, यह दावा करते हुए कि यह प्रकार को अस्पष्ट कर सकता है।
जिसमें एक पूर्णांक घटक है, जिसके द्वारा एक्सेस किया गया है <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>struसी t Aसी सी ount</code> बार-बार कोड बोझिल हो जाता है, यह देखना असामान्य नहीं है <code>typedef</code> के लिए अधिक सुविधाजनक पर्यायवाची प्रदान करने के लिए सी कोड में कथन <code>struसी t</code>. हालाँकि, कुछ{{who|date=October 2021}} प्रोग्रामिंग स्टाइल गाइड इसके खिलाफ सलाह देते हैं, यह दावा करते हुए कि यह प्रकार को अस्पष्ट कर सकता है।
उदाहरण के लिए:
<syntaxhighlight lang="c">
typedef struct Account_ {
  int    account_number;
  char  *first_name;
  char  *last_name;
  float balance;
} Account;
</syntaxhighlight>


उदाहरण के लिए:वाक्यविन्यास प्रकाश लैंग = सी>टाइपपीफ संरचना खाता
C++ कोड में, टाइपपीफ |<code>टीपेडेफ</code> की आवश्यकता नहीं है क्योंकि प्रकार का उपयोग करके परिभाषित किया गया है <code>स्ट्रुसी टी</code> पहले से ही नियमित नाम स्थान का हिस्सा हैं, इसलिए प्रकार को या तो कहा जा सकता है <code>स्ट्रुसी टी एसी सी काउंट</code> या केवल <code>ए सी सी अंक</code>.
  int aसी सी ount_number;
  चार * पहला_नाम;
  चार * अंतिम_नाम;
  फ्लोट बैलेंस;
वाक्यविन्यास हाइलाइट


सी ++ कोड में, टाइपपीफ |<code>typedef</code>की आवश्यकता नहीं है क्योंकि प्रकार का उपयोग करके परिभाषित किया गया है <code>struसी t</code> पहले से ही नियमित नाम स्थान का हिस्सा हैं, इसलिए प्रकार को या तो कहा जा सकता है <code>struसी t Aसी सी ount</code> या केवल <code>Aसी सी ount</code>.
एक अन्य उदाहरण के रूप में, एक त्रि-आयामी वेक्टर समग्र प्रकार जो फ़्लोटिंग पॉइंट डेटा प्रकार का उपयोग करता है, इसके साथ बनाया जा सकता है:
<syntaxhighlight lang="c">
struct Vector {
  float x;
  float y;
  float z;
};
</syntaxhighlight>


एक अन्य उदाहरण के रूप में, एक त्रि-आयामी वेक्टर समग्र प्रकार जो फ़्लोटिंग पॉइंट डेटा प्रकार का उपयोग करता है, इसके साथ बनाया जा सकता है:<वाक्यविन्यास प्रकाश लैंग = सी>संरचना वेक्टर
नाम का एक चर <code>वेग</code> के साथ <code>वेक्टर</code> समग्र प्रकार के रूप में घोषित किया जाएगा <code>वेक्टर वेग;</code> के सदस्य <code>वेग</code> डॉट नोटेशन का उपयोग करके एक्सेस किया जाएगा। उदाहरण के लिए, <code>वेग.x = 5;</code> सेट करेगा <code>x</code> का घटक <code>वेग</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 के बराबर
इसी तरह, एक रंग संरचना का उपयोग करके बनाया जा सकता है:
<syntaxhighlight lang="c">
struct Color {
  unsigned int red;
  unsigned int green;
  unsigned int blue;
};
</syntaxhighlight>


इसी तरह, एक रंग संरचना का उपयोग करके बनाया जा सकता है:वाक्यविन्यास प्रकाश लैंग = सी>संरचना का रंग
3डी ग्राफिक्स में, आपको आमतौर पर प्रत्येक शीर्ष की स्थिति और रंग दोनों का ट्रैक रखना चाहिए। ऐसा करने का एक तरीका एक बनाना होगा <code>Vertex</code> समग्र प्रकार, पहले बनाए गए का उपयोग कर <code>वेक्टर</code> और <code>रंग</code> समग्र प्रकार:
   अहस्ताक्षरित int लाल;
<syntaxhighlight lang="c">
   अहस्ताक्षरित int हरा;
struct Vertex {
  अहस्ताक्षरित int नीला;
   Vector position;
वाक्यविन्यास हाइलाइट
   Color color;
};
</syntaxhighlight>


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


वाक्यविन्यास प्रकाश लैंग = सी>वी.पोजिशन.एक्स = 0.0वी.पोजिशन.वाई = 1.5वी.पोजिशन.जेड = 0.0 v डॉट रंग. लाल = 128 v डॉट रंग. हरा = 0; v डॉट रंग. नीला= 255<वाक्यविन्यास हाइलाइट>
<syntaxhighlight lang="c">
 
v.position.x = 0.0;
v.position.y = 1.5;
v.position.z = 0.0;
v.color.red = 128;
v.color.green = 0;
v.color.blue = 255;
</syntaxhighlight>
=== आदिम उपप्रकार ===
=== आदिम उपप्रकार ===
का प्राथमिक उपयोग <code>struसी t</code> जटिल डेटाटाइप्स के निर्माण के लिए है, लेकिन कभी-कभी इसका उपयोग प्रिमिटिव [[संरचनात्मक प्रकार प्रणाली]] [[सबटाइपिंग]] बनाने के लिए किया जाता है। उदाहरण के लिए, चूंकि [[मानक सी]]{{Citation needed|date=July 2012}} आवश्यकता है कि यदि दो struसी ts में एक ही प्रारंभिक फ़ील्ड हैं, तो उन फ़ील्ड को उसी तरह कोड में प्रदर्शित किया जाएगा
का प्राथमिक उपयोग <code>स्ट्रुसी टी</code> जटिल डेटाटाइप्स के निर्माण के लिए है, लेकिन कभी-कभी इसका उपयोग प्रिमिटिव [[संरचनात्मक प्रकार प्रणाली]] [[सबटाइपिंग]] बनाने के लिए किया जाता है। उदाहरण के लिए, चूंकि [[मानक सी]] आवश्यकता है कि यदि दो स्ट्रुसी टीs में एक ही प्रारंभिक फ़ील्ड हैं, तो उन फ़ील्ड को उसी तरह कोड में प्रदर्शित किया जाएगा


<वाक्यविन्यास प्रकाश लैंग = सी>संरचना ifoo_old_stub {
<syntaxhighlight lang="c">
   लंबा एक्स, वाई;
struct ifoo_old_stub {
संरचना इफू_संस्करण_42
   long x, y;
   लंबा एक्स, वाई, जेड;
};
   नौकरानी का नाम;
struct ifoo_version_42 {
   लंबा ए, बी, सी;
   long x, y, z;
   char *name;
   long a, b, c;
};
void operate_on_ifoo(struct ifoo_old_stub *);
struct ifoo_version_42 s;
. . .
operate_on_ifoo(&s);
</syntaxhighlight>


शून्य ऑपरेट_ऑन_इफू (संरचना इफू_पुराना_स्टब *);
संरचना इफू_संस्करण_42 एस;
. . .
ऑपरेट_ऑन_इफू (& एस);
वाक्यविन्यास हाइलाइट
सही ढंग से काम करेगा।
सही ढंग से काम करेगा।
== टाइप करें हस्ताक्षर ==
== टाइप करें हस्ताक्षर ==
प्रकार के हस्ताक्षर (या फ़ंक्शन प्रकार) आदिम और समग्र प्रकारों से निर्मित होते हैं, और समग्र प्रकारों का निर्माण करते समय स्वयं प्रकार के रूप में काम कर सकते हैं:
प्रकार के हस्ताक्षर (या फ़ंक्शन प्रकार) आदिम और समग्र प्रकारों से निर्मित होते हैं, और समग्र प्रकारों का निर्माण करते समय स्वयं प्रकार के रूप में काम कर सकते हैं:


<वाक्यविन्यास प्रकाश लैंग = सी>
<syntaxhighlight lang="c">
टाइपपीफ संरचना {
typedef struct {
     इंट एक्स;
     int x;
     इंट वाई;
     int y;
}बिंदु;
} Point;


टाइपपीफ डबल (* मैट्रिक) (प्वाइंट पी 1, प्वाइंट पी 2);
typedef double (*Metric) (Point p1, Point p2);
 
टाइपपीफ संरचना {
    बिंदु केंद्र;
    डबल त्रिज्या;
    मीट्रिक मीट्रिक;
घेरा;</वाक्यविन्यास हाइलाइट>


typedef struct {
    Point centre;
    double radius;
    Metric metric;
} Circle;
</syntaxhighlight>
== यह भी देखें ==
== यह भी देखें ==
* वस्तु रचना
* वस्तु रचना
Line 104: Line 123:
{{Reflist}}
{{Reflist}}


{{Data types}}
[[Category:All articles with specifically marked weasel-worded phrases]]
[[Category: डेटा के प्रकार]] [[Category: समग्र डेटा प्रकार | समग्र डेटा प्रकार ]] [[Category: प्रकार सिद्धांत]] [[Category: उदाहरण सी कोड वाले लेख]] [[Category: C++ कोड उदाहरण के साथ लेख]]  
[[Category:Articles with hatnote templates targeting a nonexistent page]]
 
[[Category:Articles with invalid date parameter in template]]
 
[[Category:Articles with specifically marked weasel-worded phrases from October 2021]]
 
[[Category:C++ कोड उदाहरण के साथ लेख]]
[[Category: Machine Translated Page]]
[[Category:Collapse templates]]
[[Category:Created On 18/02/2023]]
[[Category:Created On 18/02/2023]]
[[Category:Machine Translated Page]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists]]
[[Category:Pages with script errors]]
[[Category:Templates Vigyan Ready]]

Latest revision as of 11:04, 17 March 2023

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

C/C ++ संरचनाएं और क्लासेज

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

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

घोषणा

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

struct Account {
   int account_number;
   char *first_name;
   char *last_name;
   float balance;
};

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

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

उदाहरण के लिए:

typedef struct Account_ {
   int    account_number;
   char   *first_name;
   char   *last_name;
   float  balance;
} Account;

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

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

struct Vector {
  float x;
  float y;
  float z;
};

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

इसी तरह, एक रंग संरचना का उपयोग करके बनाया जा सकता है:

struct Color {
  unsigned int red;
  unsigned int green;
  unsigned int blue;
};

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

struct Vertex {
  Vector position;
  Color color;
};

तात्कालिकता

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

सदस्य पहुंच

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

v.position.x = 0.0;
v.position.y = 1.5;
v.position.z = 0.0;
v.color.red = 128;
v.color.green = 0;
v.color.blue = 255;

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

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

struct ifoo_old_stub {
   long x, y;
};
struct ifoo_version_42 {
   long x, y, z;
   char *name;
   long a, b, c;
};
void operate_on_ifoo(struct ifoo_old_stub *);
struct ifoo_version_42 s;
. . .
operate_on_ifoo(&s);

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

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

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

typedef struct {
    int x;
    int y;
} Point;

typedef double (*Metric) (Point p1, Point p2);

typedef struct {
    Point centre;
    double radius;
    Metric metric;
} Circle;

यह भी देखें

संदर्भ

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