स्ट्रक्चर (Structure) क्या है?
स्ट्रक्चर विभिन्न डेटा प्रकारों के चरों का संग्रह है जिन्हें एक ही नाम के तहत समूहित किया जाता है। यह संबंधित डेटा को एक इकाई के रूप में व्यवस्थित करता है।
स्ट्रक्चर की विशेषताएं
- असाइनमेंट ऑपरेटर (
=) से पूरी स्ट्रक्चर कॉपी की जा सकती है। - नेस्टेड स्ट्रक्चर (स्ट्रक्चर के अंदर स्ट्रक्चर) जटिल डेटा के लिए उपयोगी।
- पूरी स्ट्रक्चर, व्यक्तिगत सदस्य, या पता फंक्शन में पास किया जा सकता है।
- स्ट्रक्चर पॉइंटर बनाए जा सकते हैं।
घोषणा सिंटैक्स
struct टैग_नाम {
डेटा_प्रकार सदस्य1;
डेटा_प्रकार सदस्य2;
// ...
};
// उदाहरण
struct Book {
int pages;
char author[30];
float price;
};
लोकल स्कोप में स्ट्रक्चर
स्ट्रक्चर को फंक्शन के अंदर (लोकल स्कोप) घोषित किया जा सकता है, जिससे उसकी दृश्यता केवल उस फंक्शन तक सीमित रहती है।
उदाहरण प्रोग्राम: लोकल स्कोप स्ट्रक्चर
#include <stdio.h>
// ग्लोबल स्ट्रक्चर (फाइल स्कोप)
struct {
char name[20];
int age;
int salary;
char add[30];
} emp1, emp2;
// फंक्शन में लोकल स्ट्रक्चर
int manager() {
struct {
char name[20];
int age;
int salary;
char add[50];
} manager;
manager.age = 27;
if (manager.age > 30)
manager.salary = 65000;
else
manager.salary = 55000;
return manager.salary;
}
int main() {
// ग्लोबल स्ट्रक्चर चरों का उपयोग
printf("emp1 नाम: ");
scanf("%19s", emp1.name);
printf("emp1 पता: ");
scanf("%29s", emp1.add);
printf("emp1 वेतन: ");
scanf("%d", &emp1.salary);
printf("emp2 नाम: ");
scanf("%19s", emp2.name);
printf("emp2 पता: ");
scanf("%29s", emp2.add);
printf("emp2 वेतन: ");
scanf("%d", &emp2.salary);
printf("\nemp1 वेतन: %d", emp1.salary);
printf("\nemp2 वेतन: %d", emp2.salary);
printf("\nमैनेजर वेतन: %d\n", manager());
return 0;
}
आउटपुट उदाहरण
emp1 नाम: Hari emp1 पता: Hyderabad emp1 वेतन: 4000 emp2 नाम: Lucky emp2 पता: Chennai emp2 वेतन: 5000 emp1 वेतन: 4000 emp2 वेतन: 5000 मैनेजर वेतन: 55000
स्कोप नियम सारांश
| घोषणा स्थान | स्कोप | जीवनकाल |
|---|---|---|
| फाइल स्तर (सभी फंक्शन के बाहर) | पूरी फाइल (ग्लोबल) | प्रोग्राम अवधि |
| फंक्शन के अंदर (ब्लॉक) | केवल उस ब्लॉक में | ब्लॉक निष्पादन तक |
| फंक्शन पैरामीटर में | फंक्शन बॉडी | फंक्शन कॉल अवधि |
बेहतर अभ्यास: typedef उपयोग करें
// हेडर फाइल या फाइल शीर्ष पर
typedef struct {
char name[50];
int id;
float salary;
} Employee;
// उपयोग
Employee emp1, emp2;
Employee *ptr = &emp1;
typedef से struct कीवर्ड बार-बार लिखने की जरूरत नहीं पड़ती और कोड पठनीय होता है।