कम्पोजिट डाटा टाइप: Difference between revisions
No edit summary |
|||
Line 1: | Line 1: | ||
{{About|certain types in [[C (programming language)|C]]/[[C++]]|the concept in general|डाटा टाइप #कम्पोजिट टाइप्स}} | {{About|certain types in [[C (programming language)|C]]/[[C++]]|the concept in general|डाटा टाइप #कम्पोजिट टाइप्स}} | ||
[[कंप्यूटर विज्ञान]] में, | [[कंप्यूटर विज्ञान]] में, एककम्पोजिट [[डेटा प्रकार]] या यौगिक डेटा प्रकार कोई भी डेटा प्रकार होता है जिसे [[प्रोग्रामिंग भाषा]] के [[आदिम डेटा प्रकार]] और अन्य मिश्रित प्रकारों का उपयोग करके एक प्रोग्राम में बनाया जा सकता है। इसे कभी-कभी संरचना याकम्पोजिट डेटा प्रकार कहा जाता है,<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> हालाँकि बाद वाला शब्द ऐरे डेटा प्रकार, [[सूची (सार डेटा प्रकार)]], आदि को भी संदर्भित कर सकता है। एककम्पोजिट प्रकार के निर्माण के कार्य को वस्तु संरचना के रूप में जाना जाता है।कम्पोजिट डेटा प्रकार प्रायः स्केलर [[चर (कंप्यूटर विज्ञान)]] के विपरीत होते हैं। | ||
== C/C ++ संरचनाएं और क्लासेज == | == C/C ++ संरचनाएं और क्लासेज == | ||
{{details|C++ क्लासेज}} | {{details|C++ क्लासेज}} | ||
एक संरचना सी और [[C++]] | एक संरचना सी और [[C++]] कीकम्पोजिट प्रकार की धारणा है, एक डेटाटाइप जो लेबल किए गए फ़ील्ड या सदस्यों के एक निश्चित सेट को बनाता है। इसे इसलिए कहा जाता है क्योंकि उन्हें घोषित करने में उपयोग किए जाने वाले स्ट्रक्चर कीवर्ड, जो संरचना के लिए छोटा है या अधिक सटीक रूप से, उपयोगकर्ता-परिभाषित डेटा संरचना है। [उद्धरण वांछित] | ||
C++ में, स्ट्रक्चर और क्लास के बीच एकमात्र अंतर डिफॉल्ट एक्सेस लेवल है, जो क्लास के लिए प्राइवेट और स्ट्रक्चर के लिए पब्लिक है। ध्यान दें कि C++ में क्लासेस और क्लास [[कीवर्ड (कंप्यूटर प्रोग्रामिंग)]] पूरी तरह से नए थे, सी प्रोग्रामिंग लैंग्वेज में पहले से ही कच्चे प्रकार के स्ट्रक्चर थे। सभी इरादों और उद्देश्यों के लिए, C++ स्ट्रक्चर्स सी स्ट्रक्चर्स का एक [[सुपरसेट]] बनाते हैं: लगभग सभी मान्य सी स्ट्रक्चर्स एक ही शब्दार्थ के साथ मान्य C++ स्ट्रक्चर्स हैं। | C++ में, स्ट्रक्चर और क्लास के बीच एकमात्र अंतर डिफॉल्ट एक्सेस लेवल है, जो क्लास के लिए प्राइवेट और स्ट्रक्चर के लिए पब्लिक है। ध्यान दें कि C++ में क्लासेस और क्लास [[कीवर्ड (कंप्यूटर प्रोग्रामिंग)]] पूरी तरह से नए थे, सी प्रोग्रामिंग लैंग्वेज में पहले से ही कच्चे प्रकार के स्ट्रक्चर थे। सभी इरादों और उद्देश्यों के लिए, C++ स्ट्रक्चर्स सी स्ट्रक्चर्स का एक [[सुपरसेट]] बनाते हैं: लगभग सभी मान्य सी स्ट्रक्चर्स एक ही शब्दार्थ के साथ मान्य C++ स्ट्रक्चर्स हैं। | ||
Line 38: | Line 38: | ||
C++ कोड में, टाइपपीफ |<code>टीपेडेफ</code> की आवश्यकता नहीं है क्योंकि प्रकार का उपयोग करके परिभाषित किया गया है <code>स्ट्रुसी टी</code> पहले से ही नियमित नाम स्थान का हिस्सा हैं, इसलिए प्रकार को या तो कहा जा सकता है <code>स्ट्रुसी टी एसी सी काउंट</code> या केवल <code>ए सी सी अंक</code>. | C++ कोड में, टाइपपीफ |<code>टीपेडेफ</code> की आवश्यकता नहीं है क्योंकि प्रकार का उपयोग करके परिभाषित किया गया है <code>स्ट्रुसी टी</code> पहले से ही नियमित नाम स्थान का हिस्सा हैं, इसलिए प्रकार को या तो कहा जा सकता है <code>स्ट्रुसी टी एसी सी काउंट</code> या केवल <code>ए सी सी अंक</code>. | ||
एक अन्य उदाहरण के रूप में, एक त्रि-आयामी | एक अन्य उदाहरण के रूप में, एक त्रि-आयामी वेक्टरकम्पोजिट प्रकार जो फ़्लोटिंग पॉइंट डेटा प्रकार का उपयोग करता है, इसके साथ बनाया जा सकता है: | ||
<syntaxhighlight lang="c"> | <syntaxhighlight lang="c"> | ||
struct Vector { | struct Vector { | ||
Line 47: | Line 47: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
नाम का एक चर <code>वेग</code> के साथ <code>वेक्टर</code> | नाम का एक चर <code>वेग</code> के साथ <code>वेक्टर</code>कम्पोजिट प्रकार के रूप में घोषित किया जाएगा <code>वेक्टर वेग;</code> के सदस्य <code>वेग</code> डॉट नोटेशन का उपयोग करके एक्सेस किया जाएगा। उदाहरण के लिए, <code>वेग.x = 5;</code> सेट करेगा <code>x</code> का घटक <code>वेग</code> 5 के बराबर | ||
इसी तरह, एक रंग संरचना का उपयोग करके बनाया जा सकता है: | इसी तरह, एक रंग संरचना का उपयोग करके बनाया जा सकता है: | ||
Line 58: | Line 58: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
3डी ग्राफिक्स में, आपको आमतौर पर प्रत्येक शीर्ष की स्थिति और रंग दोनों का ट्रैक रखना चाहिए। ऐसा करने का एक तरीका एक बनाना होगा <code>Vertex</code> | 3डी ग्राफिक्स में, आपको आमतौर पर प्रत्येक शीर्ष की स्थिति और रंग दोनों का ट्रैक रखना चाहिए। ऐसा करने का एक तरीका एक बनाना होगा <code>Vertex</code>कम्पोजिट प्रकार, पहले बनाए गए का उपयोग कर <code>वेक्टर</code> और <code>रंग</code>कम्पोजिट प्रकार: | ||
<syntaxhighlight lang="c"> | <syntaxhighlight lang="c"> | ||
struct Vertex { | struct Vertex { | ||
Line 123: | Line 123: | ||
== टाइप करें हस्ताक्षर == | == टाइप करें हस्ताक्षर == | ||
प्रकार के हस्ताक्षर (या फ़ंक्शन प्रकार) आदिम | प्रकार के हस्ताक्षर (या फ़ंक्शन प्रकार) आदिम औरकम्पोजिट प्रकारों से निर्मित होते हैं, औरकम्पोजिट प्रकारों का निर्माण करते समय स्वयं प्रकार के रूप में काम कर सकते हैं: | ||
<syntaxhighlight lang="c"> | <syntaxhighlight lang="c"> |
Revision as of 14:50, 16 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;
यह भी देखें
- वस्तु रचना
- संरचना (सी प्रोग्रामिंग भाषा)
- अदिश (गणित)
संदर्भ
- ↑ Howe, Denis. "The Free On-line Dictionary of Computing". foldoc.org. Retrieved 6 February 2023.