Sunday, March 1, 2020

Structure in C programming with examples in hindi

c language tutorial in hindi
c language in hindi
संरचना एक ही नाम द्वारा दर्शाए गए विभिन्न डेटा प्रकारों के चर का समूह है। C प्रोग्रामिंग में एक संरचना की आवश्यकता को समझने के लिए एक उदाहरण लेते हैं।

कहते हैं कि हमें छात्रों के डेटा को स्टोर करने की आवश्यकता है जैसे छात्र का नाम, उम्र, पता, आईडी आदि। ऐसा करने का एक तरीका प्रत्येक विशेषता के लिए एक अलग चर बनाना होगा, हालांकि जब आपको कई छात्रों के डेटा को संग्रहीत करने की आवश्यकता होती है तो स्थिति, आपको प्रत्येक छात्र के लिए इन कई चर को फिर से बनाने की आवश्यकता होगी। इस तरह से डेटा स्टोर करने के लिए यह एक बड़ा सिरदर्द है।

हम संरचना का उपयोग करके इस समस्या को आसानी से हल कर सकते हैं। हम एक संरचना बना सकते हैं जिसमें नाम, आईडी, पता और उम्र के लिए सदस्य हैं और फिर हम प्रत्येक छात्र के लिए इस संरचना के चर बना सकते हैं। यह भ्रामक लग सकता है, चिंता न करें हम इसे उदाहरण की मदद से समझेंगे।

सी प्रोग्रामिंग में एक संरचना कैसे बनाएं (How to create a structure in C Programming)


हम सी में एक संरचना बनाने के लिए स्ट्रक्चर कीवर्ड का उपयोग करते हैं। स्ट्रक्चर कीवर्ड एक संरचित डेटा प्रकार का संक्षिप्त रूप है।

struct struct_name {
   DataType member1_name;
   DataType member2_name;
   DataType member3_name;
   
};

यहाँ आपकी पसंद का कुछ भी नही हो सकता है। सदस्यों का डेटा प्रकार समान या भिन्न हो सकता है। एक बार जब हमने संरचना की घोषणा कर दी है तो हम संरचना नाम का उपयोग डेटा प्रकार जैसे कि इंट, फ्लोट आदि के रूप में कर सकते हैं।

    पहले हम स्ट्रक्चर वेरिएबल बनाने, स्ट्रक्चर सदस्यों को एक्सेस करने आदि का सिंटैक्स देखेंगे और फिर हम एक पूरा उदाहरण देखेंगे।

कैसे एक संरचना के चर घोषित करने के लिए (How to declare variable of a structure?)

struct  struct_name  var_name;

or

struct struct_name {
   DataType member1_name;
   DataType member2_name;
   DataType member3_name;
   
} var_name;

How to access data members of a structure using a struct variable?

var_name.member1_name;
var_name.member2_name;

How to assign values to structure members?

ऐसा करने के तीन तरीके हैं।

1) Using Dot(.) operator

var_name.memeber_name = value;

2) All members assigned in one statement

struct struct_name var_name = 
{value for memeber1, value for memeber2 so on for all the members}

3) Designated initializers – We will discuss this later at the end of this post.

 

Example of Structure in C

#include <stdio.h>
/* Created a structure here. The name of the structure is
 * StudentData.
 */
struct StudentData{
    char *stu_name;
    int stu_id;
    int stu_age;
};
int main()
{
     /* student is the variable of structure StudentData*/
     struct StudentData student;

     /*Assigning the values of each struct member here*/
     student.stu_name = "Steve";
     student.stu_id = 1234;
     student.stu_age = 30;

     /* Displaying the values of struct members */
     printf("Student Name is: %s", student.stu_name);
     printf("\nStudent Id is: %d", student.stu_id);
     printf("\nStudent Age is: %d", student.stu_age);
     return 0;
}
Output:
Student Name is: Steve
Student Id is: 1234
Student Age is: 30

सी में नेस्टेड स्ट्रक्चर: एक और स्ट्रक्चर के अंदर स्ट्रक्चर (Nested Structure in C: Struct inside another struct)


आप किसी अन्य संरचना के अंदर एक संरचना का उपयोग कर सकते हैं, जो काफी संभव है। जैसा कि मैंने ऊपर बताया कि एक बार जब आप एक संरचना की घोषणा करते हैं, तो स्ट्रक्चर struct_name एक नए डेटा प्रकार के रूप में कार्य करता है, इसलिए आप इसे अन्य डेटा सदस्यों के डेटा प्रकार की तरह ही किसी अन्य संरचना में शामिल कर सकते हैं। भ्रामक लगता है? चिंता मत करो। निम्नलिखित उदाहरण आपके संदेह को स्पष्ट करेगा।

सी प्रोग्रामिंग में नेस्टेड स्ट्रक्चर का उदाहरण (Example of Nested Structure in C Programming)


आइए हम बताते हैं कि हमारे पास दो संरचनाएं हैं: 


Structure 1: stu_address
 
struct stu_address
{
     int street;
     char *state;
     char *city;
     char *country;
}
Structure 2: stu_data

struct stu_data
{
    int stu_id;
    int stu_age;
    char *stu_name;
    struct stu_address stuAddress;
}

जैसा कि आप यहां देख सकते हैं कि मैंने एक संरचना को किसी अन्य संरचना के अंदर घोंसला बनाया है।

Assignment for struct inside struct (Nested struct)

दो संरचनाओं का उदाहरण लेते हैं जो हमने तर्क को समझने के लिए ऊपर देखा था 


struct  stu_data  mydata;
mydata.stu_id = 1001;
mydata.stu_age = 30;
mydata.stuAddress.state = "UP"; //Nested struct assignment
..

How to access nested structure members?

Using chain of “.” operator.
Suppose you want to display the city alone from nested struct – 

printf("%s",  mydata.stuAddress.city);

Use of typedef in Structure


typedef कोड को छोटा बनाता है और पठनीयता में सुधार करता है। उपरोक्त चर्चा में हमने देखा है कि हर बार स्ट्रक्चर्स का उपयोग करते समय हमें लंबे सिंटैक्स का उपयोग करना पड़ता है, जो कोड को भ्रमित, लंबा, जटिल और कम पठनीय बनाता है। इस समस्या का सरल समाधान टाइप-एफ का उपयोग है। यह संरचना के एक उपनाम की तरह है।


Code without typedef
struct home_address {
  int local_street;
  char *town;
  char *my_city;
  char *my_country;
};
...
struct home_address var; 
var.town = "Agra";
Code using tyepdef
typedef struct home_address{
  int local_street;
  char *town;
  char *my_city;
  char *my_country;
}addr;
..
..
addr var1;
var.town = "Agra";

हर बार आपको स्ट्रक्चर वैरिएबल घोषित करने के लिए स्ट्रक्चर होम_एड्रेस का उपयोग करने के बजाय, आप बस एड्रफ का उपयोग कर सकते हैं, जिसे हमने परिभाषित किया है।

Designated initializers to set values of Structure members

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


#include <stdio.h>
struct numbers
{
   int num1, num2;
};
int main()
{
   // Assignment using using designated initialization
   struct numbers s1 = {.num2 = 22, .num1 = 11};
   struct numbers s2 = {.num2 = 30};
 
   printf ("num1: %d, num2: %d\n", s1.num1, s1.num2);
   printf ("num1: %d", s2.num2);
   return 0;
}
Output:
num1: 11, num2: 22
num1: 30

0 Comments:

Post a Comment