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

From Vigyanwiki
(Created page with "{{About|certain types in C/C++|the concept in general|Data type#Composite types}} {{More citations needed|date=May 2016}} कंप्यू...")
 
No edit summary
 
(16 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}}
A <code>struct</code> C (प्रोग्रामिंग लैंग्वेज) और [[C++]] की एक समग्र प्रकार की धारणा है, एक डेटाटाइप जो लेबल किए गए फ़ील्ड या सदस्यों के एक निश्चित सेट की रचना करता है। के कारण ऐसा कहा जाता है <code>struct</code> कीवर्ड उन्हें घोषित करने में उपयोग किया जाता है, जो संरचना के लिए छोटा है या अधिक सटीक रूप से, उपयोगकर्ता-परिभाषित डेटा संरचना।{{Citation needed|reason=Please give a reliable source for this assertion.|date=March 2009}}
सी ++ में, ए के बीच एकमात्र अंतर <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 समान शब्दार्थ के साथ।
== C/C ++ संरचनाएं और क्लासेज ==
{{details|C++ क्लासेज}}
एक संरचना सी और [[C++]] की समग्र प्रकार की धारणा है, एक डेटाटाइप जो लेबल किए गए फ़ील्ड या सदस्यों के एक निश्चित सेट को बनाता है। इसे इसलिए कहा जाता है क्योंकि उन्हें घोषित करने में उपयोग किए जाने वाले स्ट्रक्चर कीवर्ड, जो संरचना के लिए छोटा है या अधिक सटीक रूप से, उपयोगकर्ता-परिभाषित डेटा संरचना है। [उद्धरण वांछित]
 
C++ में, स्ट्रक्चर और क्लास के बीच एकमात्र अंतर डिफॉल्ट एक्सेस लेवल है, जो क्लास के लिए प्राइवेट और स्ट्रक्चर के लिए पब्लिक है। ध्यान दें कि C++ में क्लासेस और क्लास [[कीवर्ड (कंप्यूटर प्रोग्रामिंग)]] पूरी तरह से नए थे, सी प्रोग्रामिंग लैंग्वेज में पहले से ही कच्चे प्रकार के स्ट्रक्चर थे। सभी इरादों और उद्देश्यों के लिए, C++ स्ट्रक्चर्स सी स्ट्रक्चर्स का एक [[सुपरसेट]] बनाते हैं: लगभग सभी मान्य सी स्ट्रक्चर्स एक ही शब्दार्थ के साथ मान्य C++ स्ट्रक्चर्स हैं।


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


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


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


उदाहरण के लिए:
उदाहरण के लिए:
<वाक्यविन्यास प्रकाश लैंग = सी>
<syntaxhighlight lang="c">
टाइपपीफ संरचना खाता_ {
typedef struct Account_ {
   int account_number;
   int   account_number;
   चार * पहला_नाम;
   char  *first_name;
   चार * अंतिम_नाम;
   char  *last_name;
   फ्लोट बैलेंस;
   float  balance;
} खाता;
} Account;
</वाक्यविन्यास हाइलाइट>
</syntaxhighlight>


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


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


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


इसी तरह, एक रंग संरचना का उपयोग करके बनाया जा सकता है:
इसी तरह, एक रंग संरचना का उपयोग करके बनाया जा सकता है:
<वाक्यविन्यास प्रकाश लैंग = सी>
<syntaxhighlight lang="c">
संरचना का रंग {
struct Color {
   अहस्ताक्षरित int लाल;
   unsigned int red;
   अहस्ताक्षरित int हरा;
   unsigned int green;
   अहस्ताक्षरित int नीला;
   unsigned int blue;
};
};
</वाक्यविन्यास हाइलाइट>
</syntaxhighlight>


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


=== तात्कालिकता ===
=== तात्कालिकता ===
प्रकार का एक चर बनाएँ <code>struct Vertex</code> पहले के समान प्रारूप का उपयोग करना: <code>Vertex v;</code>
प्रकार का एक चर बनाएँ <code>स्ट्रक्चर वर्टेक्स</code> पहले के समान प्रारूप का उपयोग करना: वर्टेक्स वि<code>;</code>
 
 
=== सदस्य पहुंच ===
=== सदस्य पहुंच ===
के घटकों को मान असाइन करें <code>v</code> जैसे इतना:
के घटकों को मान असाइन करें <code>v</code> जैसे इतना:


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


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


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


<वाक्यविन्यास प्रकाश लैंग = सी>
<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 130: 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.