डी प्रोग्रामिंग - संरचनाएं

structure अभी तक डी प्रोग्रामिंग में एक अन्य उपयोगकर्ता परिभाषित डेटा प्रकार उपलब्ध है, जो आपको विभिन्न प्रकार के डेटा आइटम को संयोजित करने की अनुमति देता है।

एक रिकॉर्ड का प्रतिनिधित्व करने के लिए संरचनाओं का उपयोग किया जाता है। मान लीजिए कि आप किसी लाइब्रेरी में अपनी पुस्तकों पर नज़र रखना चाहते हैं। आप प्रत्येक पुस्तक के बारे में निम्नलिखित विशेषताओं को ट्रैक करना चाहते हैं -

  • Title
  • Author
  • Subject
  • बुक आईडी

एक संरचना को परिभाषित करना

एक संरचना को परिभाषित करने के लिए, आपको इसका उपयोग करना चाहिए structबयान। स्ट्रक्चर स्टेटमेंट एक नए डेटा प्रकार को परिभाषित करता है, जिसमें आपके प्रोग्राम के लिए एक से अधिक सदस्य होते हैं। संरचना विवरण का प्रारूप यह है -

struct [structure tag] { 
   member definition; 
   member definition; 
   ... 
   member definition; 
} [one or more structure variables];

structure tagवैकल्पिक है और प्रत्येक सदस्य परिभाषा एक सामान्य चर परिभाषा है, जैसे कि int i; या फ्लोट एफ; या कोई अन्य मान्य चर परिभाषा। अर्धविराम से पहले संरचना की परिभाषा के अंत में, आप एक या एक से अधिक संरचना चर निर्दिष्ट कर सकते हैं जो वैकल्पिक हैं। यहाँ आप पुस्तकों की संरचना को घोषित करने का तरीका है -

struct Books {
   char [] title;
   char [] author;
   char [] subject;
   int   book_id;
};

संरचना सदस्यों तक पहुँचना

किसी संरचना के किसी भी सदस्य तक पहुँचने के लिए, आप इसका उपयोग करते हैं member access operator (.)। सदस्य एक्सेस ऑपरेटर को संरचना चर नाम और संरचना सदस्य के बीच की अवधि के रूप में कोडित किया जाता है जिसे हम एक्सेस करना चाहते हैं। आप उपयोग करेंगेstructकीवर्ड संरचना प्रकार के चर को परिभाषित करने के लिए। निम्नलिखित उदाहरण संरचना के उपयोग की व्याख्या करता है -

import std.stdio; 
 
struct Books { 
   char [] title; 
   char [] author; 
   char [] subject; 
   int   book_id; 
}; 
 
void main( ) { 
   Books Book1;        /* Declare Book1 of type Book */ 
   Books Book2;        /* Declare Book2 of type Book */ 
   
   /* book 1 specification */ 
   Book1.title = "D Programming".dup; 
   Book1.author = "Raj".dup; 
   Book1.subject = "D Programming Tutorial".dup;
   Book1.book_id = 6495407; 
   
   /* book 2 specification */ 
   Book2.title = "D Programming".dup; 
   Book2.author = "Raj".dup; 
   Book2.subject = "D Programming Tutorial".dup; 
   Book2.book_id = 6495700; 
   
   /* print Book1 info */ 
   writeln( "Book 1 title : ", Book1.title); 
   writeln( "Book 1 author : ", Book1.author); 
   writeln( "Book 1 subject : ", Book1.subject); 
   writeln( "Book 1 book_id : ", Book1.book_id);  
   
   /* print Book2 info */ 
   writeln( "Book 2 title : ", Book2.title); 
   writeln( "Book 2 author : ", Book2.author); 
   writeln( "Book 2 subject : ", Book2.subject); 
   writeln( "Book 2 book_id : ", Book2.book_id); 
}

जब उपरोक्त कोड संकलित और निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -

Book 1 title : D Programming 
Book 1 author : Raj 
Book 1 subject : D Programming Tutorial 
Book 1 book_id : 6495407 
Book 2 title : D Programming 
Book 2 author : Raj 
Book 2 subject : D Programming Tutorial 
Book 2 book_id : 6495700

फ़ंक्शन तर्क के रूप में संरचनाएं

आप किसी अन्य चर या पॉइंटर को पास करते हुए एक संरचना को फ़ंक्शन तर्क के रूप में उसी तरह से पारित कर सकते हैं। आप संरचना चर को उसी तरह एक्सेस करेंगे जैसे आपने उपरोक्त उदाहरण में एक्सेस किया है -

import std.stdio;

struct Books { 
   char [] title; 
   char [] author; 
   char [] subject; 
   int   book_id; 
}; 
 
void main( ) { 
   Books Book1;        /* Declare Book1 of type Book */ 
   Books Book2;        /* Declare Book2 of type Book */  
   
   /* book 1 specification */ 
   Book1.title = "D Programming".dup; 
   Book1.author = "Raj".dup; 
   Book1.subject = "D Programming Tutorial".dup; 
   Book1.book_id = 6495407;  
   
   /* book 2 specification */ 
   Book2.title = "D Programming".dup; 
   Book2.author = "Raj".dup; 
   Book2.subject = "D Programming Tutorial".dup; 
   Book2.book_id = 6495700;  
   
   /* print Book1 info */ 
   printBook( Book1 );  
   
   /* Print Book2 info */ 
   printBook( Book2 );  
}
 
void printBook( Books book ) { 
   writeln( "Book title : ", book.title); 
   writeln( "Book author : ", book.author); 
   writeln( "Book subject : ", book.subject); 
   writeln( "Book book_id : ", book.book_id); 
}

जब उपरोक्त कोड संकलित और निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -

Book title : D Programming 
Book author : Raj 
Book subject : D Programming Tutorial 
Book book_id : 6495407 
Book title : D Programming 
Book author : Raj
Book subject : D Programming Tutorial 
Book book_id : 6495700

संरचनाएं प्रारंभ

संरचनाओं को दो रूपों में शुरू किया जा सकता है, एक बाधा का उपयोग करके और दूसरा {} प्रारूप का उपयोग करके। एक उदाहरण नीचे दिया गया है।

उदाहरण

import std.stdio;

struct Books { 
   char [] title; 
   char [] subject = "Empty".dup; 
   int   book_id = -1; 
   char [] author = "Raj".dup;  
}; 
 
void main( ) { 
   Books Book1 = Books("D Programming".dup, "D Programming Tutorial".dup, 6495407 ); 
   printBook( Book1 ); 
   
   Books Book2 = Books("D Programming".dup, 
      "D Programming Tutorial".dup, 6495407,"Raj".dup ); 
   printBook( Book2 );
   
   Books Book3 =  {title:"Obj C programming".dup, book_id : 1001};
   printBook( Book3 ); 
}
  
void printBook( Books book ) { 
   writeln( "Book title : ", book.title); 
   writeln( "Book author : ", book.author); 
   writeln( "Book subject : ", book.subject); 
   writeln( "Book book_id : ", book.book_id); 
}

जब उपरोक्त कोड संकलित और निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -

Book title : D Programming 
Book author : Raj 
Book subject : D Programming Tutorial 
Book book_id : 6495407 
Book title : D Programming 
Book author : Raj 
Book subject : D Programming Tutorial 
Book book_id : 6495407 
Book title : Obj C programming 
Book author : Raj 
Book subject : Empty 
Book book_id : 1001

स्थैतिक सदस्य

स्थैतिक चर केवल एक बार आरंभिक होते हैं। उदाहरण के लिए, पुस्तकों के लिए अद्वितीय आईडी रखने के लिए हम book_id को स्थिर बना सकते हैं और पुस्तक आईडी को बढ़ा सकते हैं। एक उदाहरण नीचे दिया गया है।

उदाहरण

import std.stdio;  

struct Books { 
   char [] title; 
   char [] subject = "Empty".dup; 
   int   book_id; 
   char [] author = "Raj".dup; 
   static int id = 1000; 
}; 
 
void main( ) { 
   Books Book1 = Books("D Programming".dup, "D Programming Tutorial".dup,++Books.id ); 
   printBook( Book1 );  
   
   Books Book2 = Books("D Programming".dup, "D Programming Tutorial".dup,++Books.id); 
   printBook( Book2 );  
   
   Books Book3 =  {title:"Obj C programming".dup, book_id:++Books.id}; 
   printBook( Book3 ); 
}
  
void printBook( Books book ) { 
   writeln( "Book title : ", book.title); 
   writeln( "Book author : ", book.author); 
   writeln( "Book subject : ", book.subject); 
   writeln( "Book book_id : ", book.book_id); 
}

जब उपरोक्त कोड संकलित और निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -

Book title : D Programming 
Book author : Raj 
Book subject : D Programming Tutorial 
Book book_id : 1001 
Book title : D Programming 
Book author : Raj 
Book subject : D Programming Tutorial 
Book book_id : 1002 
Book title : Obj C programming 
Book author : Raj 
Book subject : Empty 
Book book_id : 1003