कम्पोजिट डाटा टाइप: Difference between revisions
(→सी/सी ++ संरचनाएं और कक्षाएं: modification) |
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| | {{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 ++ संरचनाएं और क्लासेज == | ||
{{details|C++ क्लासेज}} | |||
एक संरचना सी और [[C++]] की समग्र प्रकार की धारणा है, एक डेटाटाइप जो लेबल किए गए फ़ील्ड या सदस्यों के एक निश्चित सेट को बनाता है। इसे इसलिए कहा जाता है क्योंकि उन्हें घोषित करने में उपयोग किए जाने वाले स्ट्रक्चर कीवर्ड, जो संरचना के लिए छोटा है या अधिक सटीक रूप से, उपयोगकर्ता-परिभाषित डेटा संरचना है। [उद्धरण वांछित] | |||
C++ में, स्ट्रक्चर और क्लास के बीच एकमात्र अंतर डिफॉल्ट एक्सेस लेवल है, जो क्लास के लिए प्राइवेट और स्ट्रक्चर के लिए पब्लिक है। ध्यान दें कि C++ में क्लासेस और क्लास [[कीवर्ड (कंप्यूटर प्रोग्रामिंग)]] पूरी तरह से नए थे, सी प्रोग्रामिंग लैंग्वेज में पहले से ही कच्चे प्रकार के स्ट्रक्चर थे। सभी इरादों और उद्देश्यों के लिए, C++ स्ट्रक्चर्स सी स्ट्रक्चर्स का एक [[सुपरसेट]] बनाते हैं: लगभग सभी मान्य सी स्ट्रक्चर्स एक ही शब्दार्थ के साथ मान्य C++ स्ट्रक्चर्स हैं। | |||
=== घोषणा === | === घोषणा === | ||
एक संरचना घोषणा में फ़ील्ड की एक सूची होती है, जिनमें से प्रत्येक का कोई भी प्रकार हो सकता है। किसी स्ट्रक्चर ऑब्जेक्ट के लिए आवश्यक कुल संग्रहण सभी फ़ील्ड्स की संग्रहण आवश्यकताओं के योग के साथ-साथ किसी भी आंतरिक पैडिंग का योग होता है। | |||
उदाहरण के लिए: | |||
<syntaxhighlight lang="c"> | |||
struct Account { | |||
int account_number; | |||
char *first_name; | |||
char *last_name; | |||
float balance; | |||
}; | |||
</syntaxhighlight> | |||
एक प्रकार को परिभाषित करता है, ''संदर्भित'' के रूप में स्ट्रुसी टी एसी सी काउंट। इस प्रकार का नया वेरिएबल बनाने के लिए हम लिख सकते हैं <code>स्ट्रुसी टी असी सी काउंट मायएसी सी काउंट;</code> | |||
जिसमें एक पूर्णांक घटक है, जिसके द्वारा एक्सेस किया गया है <code>मेरी ए सी सी काउंट. ए सी सी काउंट_नंबर</code>, और एक फ़्लोटिंग-पॉइंट घटक, द्वारा एक्सेस किया गया <code>मेरी ए सी सी काउंट.बैलेंसी ई</code>, इसके साथ ही <code>पहला नाम</code> और <code>उप-नाम</code> अवयव। ढांचा <code>मेरी ए.सी.सी आउंट</code> सभी चार मान शामिल हैं, और सभी चार क्षेत्रों को स्वतंत्र रूप से बदला जा सकता है। | |||
लिखने के बाद से <code>स्ट्रुसी टी एसी सी काउंट</code> बार-बार कोड बोझिल हो जाता है, यह देखना असामान्य नहीं है <code>टीपेडेफ</code> के लिए अधिक सुविधाजनक पर्यायवाची प्रदान करने के लिए सी कोड में कथन <code>स्ट्रुसी टी</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>. | |||
एक अन्य उदाहरण के रूप में, एक त्रि-आयामी वेक्टर समग्र प्रकार जो फ़्लोटिंग पॉइंट डेटा प्रकार का उपयोग करता है, इसके साथ बनाया जा सकता है: | |||
<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 के बराबर | ||
इसी तरह, एक रंग संरचना का उपयोग करके बनाया जा सकता है: | |||
<syntaxhighlight lang="c"> | |||
struct Color { | |||
unsigned int red; | |||
unsigned int green; | |||
unsigned int blue; | |||
}; | |||
</syntaxhighlight> | |||
3डी ग्राफिक्स में, आपको आमतौर पर प्रत्येक शीर्ष की स्थिति और रंग दोनों का ट्रैक रखना चाहिए। ऐसा करने का एक तरीका एक बनाना होगा <code>Vertex</code> समग्र प्रकार, पहले बनाए गए का उपयोग कर <code>वेक्टर</code> और <code>रंग</code> समग्र प्रकार: | |||
<syntaxhighlight lang="c"> | |||
struct Vertex { | |||
Vector position; | |||
Color color; | |||
}; | |||
</syntaxhighlight> | |||
=== तात्कालिकता === | === तात्कालिकता === | ||
प्रकार का एक चर बनाएँ <code> | प्रकार का एक चर बनाएँ <code>स्ट्रक्चर वर्टेक्स</code> पहले के समान प्रारूप का उपयोग करना: वर्टेक्स वि<code>;</code> | ||
=== सदस्य पहुंच === | === सदस्य पहुंच === | ||
के घटकों को मान असाइन करें <code>v</code> जैसे इतना: | के घटकों को मान असाइन करें <code>v</code> जैसे इतना: | ||
<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> | का प्राथमिक उपयोग <code>स्ट्रुसी टी</code> जटिल डेटाटाइप्स के निर्माण के लिए है, लेकिन कभी-कभी इसका उपयोग प्रिमिटिव [[संरचनात्मक प्रकार प्रणाली]] [[सबटाइपिंग]] बनाने के लिए किया जाता है। उदाहरण के लिए, चूंकि [[मानक सी]] आवश्यकता है कि यदि दो स्ट्रुसी टीs में एक ही प्रारंभिक फ़ील्ड हैं, तो उन फ़ील्ड को उसी तरह कोड में प्रदर्शित किया जाएगा | ||
< | <syntaxhighlight lang="c"> | ||
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); | |||
</syntaxhighlight> | |||
सही ढंग से काम करेगा। | सही ढंग से काम करेगा। | ||
== टाइप करें हस्ताक्षर == | == टाइप करें हस्ताक्षर == | ||
प्रकार के हस्ताक्षर (या फ़ंक्शन प्रकार) आदिम और समग्र प्रकारों से निर्मित होते हैं, और समग्र प्रकारों का निर्माण करते समय स्वयं प्रकार के रूप में काम कर सकते हैं: | प्रकार के हस्ताक्षर (या फ़ंक्शन प्रकार) आदिम और समग्र प्रकारों से निर्मित होते हैं, और समग्र प्रकारों का निर्माण करते समय स्वयं प्रकार के रूप में काम कर सकते हैं: | ||
< | <syntaxhighlight lang="c"> | ||
typedef struct { | |||
int x; | |||
int y; | |||
} | } Point; | ||
typedef double (*Metric) (Point p1, Point p2); | |||
typedef struct { | |||
Point centre; | |||
double radius; | |||
Metric metric; | |||
} Circle; | |||
</syntaxhighlight> | |||
== यह भी देखें == | == यह भी देखें == | ||
* वस्तु रचना | * वस्तु रचना | ||
Line 104: | Line 123: | ||
{{Reflist}} | {{Reflist}} | ||
[[Category:All articles with specifically marked weasel-worded phrases]] | |||
[[Category: | [[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: | [[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;
यह भी देखें
- वस्तु रचना
- संरचना (सी प्रोग्रामिंग भाषा)
- अदिश (गणित)
संदर्भ
- ↑ Howe, Denis. "The Free On-line Dictionary of Computing". foldoc.org. Retrieved 6 February 2023.