स्ट्रक्चर क्या है? – What is Structure in C In Hindi

हेलो फ्रेंड्स आज के इस आर्टिकल में हम Structure In C Language के बारे में बात करने वाले है | 

आज हम विस्तार से जानेंगे कि स्ट्रक्चर क्या है? (What is Structure in C In Hindi) , और सी लैंग्वेज में हम स्ट्रक्चर का उपयोग कैसे करते है?

तो चलिए बिना समय गवाए सबसे पहले जानते है कि Structure Kya Hai

Structure in C In Hindi

स्ट्रक्चर क्या है? (What is Structure in C In Hindi) 

सी लैंग्वेज में जब हम डिफरेंट डेटा टाइप के वेरिएबल का ग्रुप बनाना चाहते है तब हम स्ट्रक्चर का उपयोग करते है 

स्ट्रक्चर एक यूजर डिफाइंड डेटा टाइप है जिसकी मदद से हम सी लैंग्वेज में अलग अलग डेटा टाइप से बने वेरिएबल्स का ग्रुप बनाते है |

स्ट्रक्चर के द्वारा हम नए डेटा टाइप का निर्माण करते है और इस नए डेटा टाइप के अंदर जितने भी Element होते है उन्हें मेंबर्स कहा जाता है |  

स्ट्रक्चर ऐरे की तरह होता है मगर Array और Structure में एक मुख्य अंतर ये होते है कि ऐरे की मदद से हम एक ही डेटा टाइप से बने वेरिएबल का ग्रुप बनाते है और स्ट्रक्चर की मदद से हम अलग अलग डेटा टाइप (int, char, float, double आदि) से बने वेरिएबल का ग्रुप बनाते है | 

स्ट्रक्चर कैसे बनाएं? (How to Create a Structure in C in Hindi)

सी लैंग्वेज में यदि हम स्ट्रक्चर की मदद से कोई नया डेटा टाइप बनाना चाहते है तो इसके लिए हमे struct कीवर्ड का उपयोग करना पड़ता है | 

इसका बेसिक सिंटेक्स कुछ ऐसा होता है -:

Syntax -:

struct struct_name 
{
   Data_Type member1_name;
   Data_Type member2_name;
   Data_Type member3_name;
   …
};
  • struct एक कीवर्ड है किसकी मदद से हम नया डेटा टाइप बनाते है 
  • struct_name  – यह structure डेटा टाइप का नाम है ये नाम आप अपने हिसाब से कुछ भी रख सकते है जैसे – student, college, class आदि | 
  • DataType – DataType में int, char, float, double कुछ भी आ सकता है | 
  • member1_name – यह वेरिएबल का नाम है |  स्ट्रक्चर के अंदर स्थित हर element मेंबर कहलाता है |

Example -:

struct student  
{   int roll_no;  
    char name[20];  
    float percent;  
}; 

यहाँ पर struct कीवर्ड है और student एक नए यूजर डिफाइंड डेटा टाइप है जिसके अंदर int , char और float की मदद से roll_no, name और percent नाम से तीन स्ट्रक्चर मेंबर वेरिएबल डिक्लेअर है | 

यदि हमे इन तीनो मेंबर को एक्सेस करना है तो इसके लिए हमे इस student डेटा टाइप का एक वेरिएबल डिक्लेअर करना पड़ेगा | 

How to Declare Structure Variables In C

स्ट्रक्चर वेरिएबल को हम इसलिए डिक्लेअर करते है ताकि स्ट्रक्चर मेंबर को आसानी से एक्सेस कर सके और अपने प्रोग्राम में कही भी उपयोग कर सके है | 

Example -:

struct employee   
{   int id;  
    char name[50];  
    float salary;  
}; 

यहाँ पर struct कीवर्ड है और employee एक नए यूजर डिफाइंड डेटा टाइप है जिसके अंदर int , char और float की मदद से id, name और salary नाम से तीन स्ट्रक्चर मेंबर वेरिएबल डिक्लेअर है | यदि हमे इन तीनो मेंबर को एक्सेस करना है तो इसके लिए हमे इस employee डेटा टाइप का एक वेरिएबल डिक्लेअर करना पड़ेगा | 

सी लैंग्वेज में हम स्ट्रक्चर वेरिएबल को दो तरह से डिक्लेअर कर सकते है -:

  • main() फंक्शन के अंदर struct कीवर्ड के द्वारा |
  • Structure डिफाइन करते समय ही स्ट्रक्चर के आखिर में | 

Method 1 -:  main()  फंक्शन के अंदर struct कीवर्ड के द्वारा 

आइये इसको हम एक example के द्वारा अच्छे से समझते है -:

Example -: 

#include<stdio.h>
struct employee  
{   int id;  
    char name[50];  
    float salary;  
};  
void main()
{
struct employee e1, e2;  
}

जैसे की मैंने ऊपर बताया है Structure Member को Access करने के लिए हमे स्ट्रक्चर वेरिएबल डिक्लेअर करना पड़ता है | तो यहाँ इस example में हमने employee स्ट्रक्चर के अंदर के मेंबर को एक्सेस करने के लिए main() फंक्शन में struct employee e1, e2; करके e1, और e2 नाम से दो स्ट्रक्चर वेरिएबल डिक्लेअर किया है जिसकी मदद से हम स्ट्रक्चर मेंबर को आसानी से एक्सेस कर सकते है | 

Structure Member को इन स्ट्रक्चर वेरिएबल के द्वारा एक्सेस करने के कुछ Method है जिसके बारे में हम आगे पढ़ेंगे | अभी के लिए हम स्ट्रक्चर वेरिएबल डिक्लेअर करने के दूसरे मेथड के बारे में जानेंगे | 

Method 2 -: Structure डिफाइन करते समय ही स्ट्रक्चर के आखिर में |  

आइये इसको भी हम एक example के द्वारा समझते है -:

Example -:

struct employee  
{   int id;  
    char name[50];  
    float salary;  
} e1,e2;  

स्ट्रक्चर वेरिएबल को हम ऊपर दिए गए example की तरह भी डिक्लेअर कर सकते है | 

Which Method is Good?

Structure वेरिएबल डिक्लेअर करने के उन दोनों तरीको में से आपको पहले तरीके का उपयोग तब करना सही रहेगा जब आपको ये पता न हो की आपको एक प्रोग्राम में उस स्ट्रक्चर के कितने वेरिएबल डिक्लेअर करने है | पहले मेथड में आप अपने प्रोग्राम में जितनी बार स्ट्रक्चर वेरिएबल की जरूरत हो उतनी बार डिक्लेअर कर सकते है | 

यदि स्ट्रक्चर वेरिएबल की संख्या FIx है तो आपको दूसरा मेथड उपयोग करना चाहिए | यह आपको main() फंक्शन के अन्दर अलग से वेरिएबल डिक्लेअर करने के टाइम करना होगा |

नोट – जब हम कोई Structure डिफाइन करते है तब उस स्ट्रक्चर को मेमोरी में कोई जगह नहीं मिलता | स्ट्रक्चर में मेमोरी में तब स्थान मिलता है जब हम उस स्ट्रक्चर का वेरिएबल डिक्लेअर करते है | 

आइये अब हम जानते है कि स्ट्रक्चर मेंबर को कैसे initialize करते है 

How To Initialize Structure Members In C

स्ट्रक्चर मेंबर को हम डिक्लेरेशन के साथ initialize नहीं कर सकते यदि हम ऐसा करने की कोशिश करेंगे तो कम्पाइलर Error देगा और प्रोग्राम रन नहीं होगा | 

struct emp 
{
   int a  = 0;  // COMPILER ERROR:  cannot initialize members here
   int b  = 0;  // COMPILER ERROR:  cannot initialize members here
}; 

Error आने का कारण ये है कि जब भी हम स्ट्रक्चर डिफाइन करते है तब स्ट्रक्चर को कोई मेमोरी नहीं मिलती |  स्ट्रक्चर को मेमोरी तब मिलती है जब हम स्ट्रक्चर वेरिएबल बनाते है | 

Structure members को हम इन तरीकों से initialize कर सकते है -:

Method 1 -:

#include<stdio.h>
struct student
{
    char name[50];
    int roll_no;  
    int age; 
};
void main() 
{
struct student s1 = { "Jeetu" , 73, 21 };    //initialization
}

Method 2: Using Dot(.) Operator

#include<stdio.h>
struct student
{
    char name[50];
    int roll_no;  
    int age; 
};
void main() 
{
struct student s1;
//initialization of each member separately

strcpy(s1.name, "Jeetu") ;    //copying string into char array
s1.roll_no = 73;
s1.age = 21;
}

Note -: स्ट्रक्चर मेंबर को हम डॉट(.) ओपेरटर द्वारा एक्सेस करके उनमे वैल्यू initialize करते है |

How To Access Structure Members

स्ट्रक्चर मेंबर को हम कई तरीको से एक्सेस कर सकते है | आइये जानते है उन तरीको के बारे में | 

  1. Dot(.) (member or dot operator) द्वारा
  2. -> (structure pointer operator) द्वारा

Method 1 -: Dot(.) operator द्वारा

Dot(.) operator द्वारा हम स्ट्रक्चर वेरिएबल को कुछ इस तरह से एक्सेस कर सकते है और उनमे अपने हिसाब से कोई वैल्यू initialize करके उनको प्रिंट भी करा सकते है |

Examples -:

#include<stdio.h>
struct student
{
    char name[50];
    int roll_no;  
    int age; 
};
void main() 
{
struct student s1;

 //initialization of each member separately

strcpy(s1.name, "Jeetu") ;    //copying string into char array
s1.roll_no = 73;
s1.age = 21;

printf( "student name %s, roll no %d and age = ", s1.name, s1.roll_no, s1.age);    
}

Output -:

student name Jeetu, roll no 73, and age = 21

Method 2: -> (structure pointer operator) द्वारा

-> (structure pointer operator) द्वारा स्ट्रक्चर वेरिएबल को एक्सेस करने के तरीके को हम अपने pointer to structure वाले टॉपिक में कवर करेंगे |

Nested Structure

सी लैंग्वेज में हम स्ट्रक्चर के अंदर एक और स्ट्रक्चर को मेंबर वेरिएबल के रूप में डिक्लेअर कर सकते है और जब हम ऐसा करते है तो इसे ही Nested Structure कहते है |

Example -:

struct Student
{
    char[50] name;
    int age;
    /* here Address is a structure */
    struct Address
    {
        char[50] locality;
        char[50] city;
        int pincode;		
    }addr;
};

दोस्तों यहाँ तक आपको समझ आ गया होगा कि स्ट्रक्चर क्या है मगर क्या आपको पता है सी लैंग्वेज में हम स्ट्रक्चर का उपयोग क्यों करते है? अगर नहीं ! तो आइये जानते है 

हमें स्ट्रक्चर की आवश्यकता क्यों है? (Why We Need Structure)

सी लैंग्वेज में कुछ pre-defined डेटा टाइप्स होते है जिसकी मदद से हम एक समय में एक ऑब्जेक्ट से रिलेटेड केवल एक इनफार्मेशन को स्टोर कर सकते है | 

यदि हम किसी ऑब्जेक्ट जैसे की स्टूडेंट का roll number, name, age, percent आदि जो की अलग अलग टाइप का डेटा है को एक साथ स्टोर करना चाहते है तब हम predefined डेटा टाइप की मदद से ऐसा नहीं कर सकते इसलिए हमे स्ट्रक्चर की जरुरत पड़ती है 

स्ट्रक्चर के द्वारा हम जो नया डेटा टाइप बनाते है उस नए डेटा टाइप में हम int, char , float, double आदि किसी भी प्रकार का डेटा स्टोर कर सकते है | 

स्ट्रक्चर के लाभ (Advantages of Structure in C )

  • स्ट्रक्चर के द्वारा हम डिफरेंट टाइप के डेटा वैल्यू को एक साथ स्टोर करके रख सकते है | 
  • इसे मेन्टेन करना काफी आसान है क्योकि इसमें पुरे रिकॉर्ड को एक सिंगल नाम के द्वारा रिप्रेजेंट किया जा सकता है | 
  • स्ट्रक्चर के द्वारा हम एक पूरा रिकॉर्ड, फंक्शन को बड़ी आसानी से पास कर सकते है | 
  • यदि आप सामान टाइप के कई सारे रिकॉर्ड स्टोर करना चाहते है तो आप स्ट्रक्चर का ऐरे बना सकते है | 

स्ट्रक्चर के नुकसान (Disadvantages of Structure In C)

  • जब आईटी प्रोजेक्ट काफी काम्प्लेक्स हो जाता है तब इसे मैनेज करना मुश्किल होता है 
  • स्ट्रक्चर स्लो होता है क्योकि इसमें कई सारे डेटा को स्टोर करने की आवश्यकता होती है | 
  • एक समय में आप एक स्ट्रक्चर मेंबर को retrieve कर सकते है | 

Example Program of Structure in C

#include<stdio.h>
struct book
{ char title[50];
  float price ;
  int id;
};

void main()
{
 struct book b1;
 printf("Enter Book Title , price and book id\n");
gets(b1.title);
scanf("%f", &b1.price);
scanf("%d",&b1.id);

 printf("\nBook Title, price and book id is : \n %s \n %f \n %d",b1.title,b1.price, b1.id);

}

Output -:

Enter Book Title , price and book id
Structure in C 
599.5
101

Book Title, price and book id is : 
Structure in C 
599.5
101

Conclusion

दोस्तों आशा करता हु कि आज के इस आर्टिकल को पढ़ने के बाद आपको  पॉइंटर क्या है? (What is Pointer in C in Hindi) सी लैंग्वेज में पॉइंटर का उपयोग कैसे करते है? और पॉइंटर उपयोग करने के क्या फायदे तथा क्या नुकशान है से संबंधित सभी जानकारी मिल गई होगी और आपको और कही इसके बारे में सर्च करना नहीं पड़ेगा |

अगर आप सी लैंग्वेज का Complete Tutorial चाहते है तो मेरे इस पोस्ट C Language Tutorial In Hindi को देखे यहाँ आपको C Programming Language के सभी टॉपिक्स step by step मिल जाएगी |

दोस्तों आशा करता हु कि आपको ये पोस्ट पसंद आई होगी और आपको पॉइंटर क्या है? (What is Pointer in C in Hindi) और सी लैंग्वेज में पॉइंटर का उपयोग कैसे करते है? के बारे में काफी जानकरी हुई होगी |

अगर आपको ये पोस्ट पसंद आया है तो इस पोस्ट को अपने अपने दोस्तों को शेयर करना न भूलिएगा ताकि उनको भी ये जानकारी प्राप्त हो सके |

अगर आपको अभी भी  पॉइंटर क्या है? (What is Pointer In C In Hindi) से संबंधित कोई भी प्रश्न या Doubt है तो आप जरूर बताये मैं आपके सभी सवालों का जवाब दूँगा और ज्यादा जानकारी के लिए आप हमसे संपर्क कर सकते है

एसी ही नया टेक्नोलॉजी ,Programming Language, Coding , C Language, C++, Python Course , Java Tutorial से रिलेटेड जानकारियाँ पाने के लिए हमारे इस वेबसाइट को सब्सक्राइब कर दीजिए | जिससे हमारी आने वाली नई पोस्ट की सूचनाएं जल्दी प्राप्त होगी |

Jeetu Sahu is A Web Developer | Computer Engineer | Passionate about Coding, Competitive Programming and Blogging