संरचना (Structure) क्या है?
संरचना विभिन्न डेटा प्रकार के चरों का एक संग्रह है, जिन्हें एक ही नाम के तहत समूहीकृत किया जाता है। यह उपयोगकर्ता-परिभाषित डेटा प्रकार बनाने की अनुमति देती है।
घोषणा और प्रारंभिकरण
सामान्य रूप
struct टैगनाम {
डेटा_प्रकार सदस्य1;
डेटा_प्रकार सदस्य2;
...
डेटा_प्रकार सदस्यn;
};
उदाहरण: पुस्तक संरचना
struct Book {
int pages;
char author[30];
float price;
};
संरचना चर घोषित करने के तीन तरीके
तरीका 1: घोषणा के साथ चर
struct Book {
int pages;
char author[30];
float price;
} b;
तरीका 2: अनाम संरचना
struct {
int pages;
char author[30];
float price;
} b;
तरीका 3: अलग घोषणा (सबसे आम)
struct Book {
int pages;
char author[30];
float price;
};
struct Book b; // चर घोषणा
प्रारंभिकरण के तरीके
विधि 1: घोषणा के साथ प्रारंभिकरण
struct Book {
int pages;
char author[30];
float price;
} b = {100, "बालू", 325.75};
विधि 2: अलग प्रारंभिकरण
struct Book {
int pages;
char author[30];
float price;
};
struct Book b = {100, "बालू", 325.75};
विधि 3: सदस्य ऑपरेटर (डॉट ऑपरेटर) का उपयोग करके
struct Book {
int pages;
char author[30];
float price;
};
struct Book b;
b.pages = 100;
strcpy(b.author, "बालू");
b.price = 325.75;
विधि 4: scanf फ़ंक्शन का उपयोग करके (रनटाइम इनपुट)
struct Book {
int pages;
char author[30];
float price;
};
struct Book b;
scanf("%d", &b.pages);
scanf("%s", b.author); // स्ट्रिंग के लिए & नहीं
scanf("%f", &b.price);
पूर्ण प्रोग्राम: रनटाइम इनपुट और आउटपुट
#include <stdio.h>
#include <string.h>
struct Book {
int pages;
char author[30];
float price;
};
int main() {
struct Book b;
printf("पुस्तक के पृष्ठ, लेखक, कीमत दर्ज करें: ");
scanf("%d %s %f", &b.pages, b.author, &b.price);
printf("\nपुस्तक का विवरण:\n");
printf("पृष्ठ: %d\n", b.pages);
printf("लेखक: %s\n", b.author);
printf("कीमत: %.2f\n", b.price);
return 0;
}
उन्नत उदाहरण: लिंक्ड लिस्ट नोड के रूप में संरचना
#include <stdio.h>
struct Node {
struct Node *prev;
int data;
struct Node *next;
};
int main() {
struct Node a, b, c, d;
int x = 100;
// नोड्स को लिंक करें: a <-> b <-> c <-> d (सर्कुलर)
a.data = 0; a.prev = &d; a.next = &b;
b.data = 1; b.prev = &a; b.next = &c;
c.data = 2; c.prev = &b; c.next = &d;
d.data = 3; d.prev = &c; d.next = &a;
// जटिल पॉइंटर श्रृंखला: a.next->next->prev->next->data
// a.next = b, b.next = c, c.prev = b, b.next = c, c.data = 2
x = a.next->next->prev->next->data;
printf("%d\n", x); // आउटपुट: 2
return 0;
}
आउटपुट
2
महत्वपूर्ण बिंदु
.(डॉट ऑपरेटर) संरचना चर के साथ सदस्य एक्सेस के लिए->(एरो ऑपरेटर) संरचना पॉइंटर के साथ सदस्य एक्सेस के लिएstrcpy()स्ट्रिंग कॉपी के लिए आवश्यक (string.hसे)- संरचनाएं फ़ंक्शन में मान द्वारा या संदर्भ द्वारा पारित की जा सकती हैं
typedefका उपयोग करके संक्षिप्त नाम बना सकते हैं:typedef struct Book Book;