structure का उपयोग क्यों करें?
सी में, ऐसे मामले (cases) हैं जहां हमें एक इकाई के कई गुणों को स्टोर करने की आवश्यकता होती है। यह आवश्यक नहीं है कि किसी संस्था के पास केवल एक ही प्रकार की सारी जानकारी हो। इसमें विभिन्न डेटा प्रकारों के विभिन्न गुण हो सकते हैं। उदाहरण के लिए, एक इकाई छात्र का नाम (स्ट्रिंग), रोल नंबर (इंट), अंक (फ्लोट) हो सकता है। एक इकाई छात्र के संबंध में इस प्रकार की जानकारी संग्रहीत करने के लिए, हमारे पास निम्नलिखित दृष्टिकोण हैं |
•नाम, रोल नंबर और अंक संग्रहीत करने के लिए अलग-अलग सरणियों का निर्माण करें।
•विभिन्न डेटा प्रकारों के संग्रह को संग्रहीत करने के लिए एक विशेष डेटा संरचना का उपयोग करें।
आइए पहले दृष्टिकोण को विस्तार से देखें।
#include<stdio.h>
void main ()
{
char names[2][10],dummy; // 2-dimensioanal character array names is used to store the names of the students
int roll_numbers[2],i;
float marks[2];
for (i=0;i<3;i++)
{
printf("Enter the name, roll number, and marks of the student %d",i+1);
scanf("%s %d %f",&names[i],&roll_numbers[i],&marks[i]);
scanf("%c",&dummy); // enter will be stored into dummy character at each iteration
}
printf("Printing the Student details ...\n");
for (i=0;i<3;i++)
{
printf("%s %d %f\n",names[i],roll_numbers[i],marks[i]);
}
}
Output:-
Enter the name, roll number, and marks of the student 1Ameer 90 92 Enter the name, roll number, and marks of the student 2Varish 91 65 Enter the name, roll number, and marks of the student 3Shama 89 79 Printing the Student details... Ameer 90 92.000000 Varish 91 65.000000 Shama 89 79.000000
उपरोक्त कार्यक्रम एक इकाई छात्र की जानकारी संग्रहीत करने की हमारी आवश्यकता को पूरा कर सकता है। हालांकि, कार्यक्रम बहुत जटिल है, और इनपुट की मात्रा के साथ जटिलता बढ़ जाती है। प्रत्येक सरणी के तत्वों को एक साथ संग्रहीत किया जाता है, लेकिन सभी सरणियों को स्मृति में सन्निहित रूप से संग्रहीत नहीं किया जा सकता है। सी आपको एक अतिरिक्त और सरल दृष्टिकोण प्रदान करता है जहां आप एक विशेष डेटा संरचना, यानी संरचना का उपयोग कर सकते हैं, जिसमें आप एक इकाई के संबंध में विभिन्न डेटा प्रकार की सभी जानकारी समूहित कर सकते हैं।
Structure क्या है?
सी में संरचना एक उपयोगकर्ता-परिभाषित डेटा प्रकार है जो हमें विभिन्न डेटा प्रकारों के संग्रह को संग्रहीत करने में सक्षम बनाता है। संरचना के प्रत्येक तत्व को सदस्य कहा जाता है। संरचनाएं सीए; कक्षाओं और टेम्प्लेट के उपयोग का अनुकरण करें क्योंकि यह विभिन्न सूचनाओं को संग्रहीत कर सकता है|
स्ट्रक्चर को परिभाषित करने के लिए स्ट्रक्चर कीवर्ड का इस्तेमाल किया जाता है। आइए सी में संरचना को परिभाषित करने के लिए वाक्यविन्यास देखें।
struct structure_name
{
data_type member1;
data_type member2;
.
.
data_type memeberN;
};
आइए सी में एक इकाई कर्मचारी के लिए एक संरचना को परिभाषित करने के लिए उदाहरण देखें।
struct employee
{ int id;
char name[20];
float salary;
};
निम्न छवि संरचना कर्मचारी के स्मृति आवंटन को दिखाती है जिसे उपरोक्त उदाहरण में परिभाषित किया गया है।
यहाँ, संरचना कीवर्ड है; कर्मचारी संरचना का नाम है; आईडी, नाम और वेतन संरचना के सदस्य या क्षेत्र हैं। आइए इसे नीचे दिए गए डायग्राम से समझते हैं |
संरचना चर घोषित करने के दो तरीके:-
हम संरचना के लिए एक चर घोषित कर सकते हैं ताकि हम संरचना के सदस्य तक आसानी से पहुंच सकें। संरचना चर घोषित करने के दो तरीके हैं|
1. main() फ़ंक्शन के भीतर स्ट्रक्चर कीवर्ड द्वारा
2. संरचना को परिभाषित करते समय एक चर घोषित करके।
पहला तरीका:
आइए स्ट्रक्चर कीवर्ड द्वारा स्ट्रक्चर वेरिएबल घोषित करने के लिए उदाहरण देखें। इसे मुख्य समारोह के भीतर घोषित किया जाना चाहिए।
struct employee
{ int id;
char name[50];
float salary;
};
अब दिए गए कोड को main() फंक्शन के अंदर लिखें।
struct employee e1, e2;
संरचना में संग्रहीत मूल्यों तक पहुँचने के लिए चर e1 और e2 का उपयोग किया जा सकता है। यहां, e1 और e2 को उसी तरह से व्यवहार किया जा सकता है जैसे C++ और Java में ऑब्जेक्ट।
दूसरा तरीका:
आइए संरचना को परिभाषित करते समय चर घोषित करने का एक और तरीका देखें।
struct employee
{ int id;
char name[50];
float salary;
}e1,e2;
कौन सा तरीका अच्छा है?
यदि चरों की संख्या निश्चित नहीं है, तो पहले दृष्टिकोण का उपयोग करें। यह आपको कई बार संरचना चर घोषित करने की सुविधा प्रदान करता है। अगर नहीं। चर निश्चित हैं, दूसरे दृष्टिकोण का उपयोग करें। यह मुख्य () फ़ंक्शन में एक चर घोषित करने के लिए आपके कोड को सहेजता है।
संरचना के सदस्यों तक पहुंचना|
संरचना सदस्यों तक पहुँचने के दो तरीके हैं|
1.By . (member or dot operator)
2.By -> (structure pointer operator)
आइए, p1 वेरिएबल के आईडी सदस्य तक पहुंचने के लिए कोड देखें। (सदस्य) ऑपरेटर।
p1.id
C Structure example:-
आइए सी भाषा में संरचना का एक सरल उदाहरण देखें।
#include<stdio.h>
#include <string.h>
struct employee
{ int id;
char name[50];
}e1; //declaring e1 variable for structure
int main( )
{
//store first employee information
e1.id=101;
strcpy(e1.name, "Sohail khan");//copying string into char array
//printing first employee information
printf( "employee 1 id : %d\n", e1.id);
printf( "employee 1 name : %s\n", e1.name);
return 0;
}
Output:-
employee 1 id : 101 employee 1 name : Sohail khan
आइए कई कर्मचारियों की जानकारी संग्रहीत करने के लिए सी भाषा में संरचना का एक और उदाहरण देखें।
#include<stdio.h>
#include <string.h>
struct employee
{ int id;
char name[50];
float salary;
}e1,e2; //declaring e1 and e2 variables for structure
int main( )
{
//store first employee information
e1.id=101;
strcpy(e1.name, "Sohail khan");//copying string into char array
e1.salary=56000;
//store second employee information
e2.id=102;
strcpy(e2.name, "Jannat khan");
e2.salary=126000;
//printing first employee information
printf( "employee 1 id : %d\n", e1.id);
printf( "employee 1 name : %s\n", e1.name);
printf( "employee 1 salary : %f\n", e1.salary);
//printing second employee information
printf( "employee 2 id : %d\n", e2.id);
printf( "employee 2 name : %s\n", e2.name);
printf( "employee 2 salary : %f\n", e2.salary);
return 0;
}
Output:-
employee 1 id : 101 employee 1 name : Sohail khan employee 1 salary : 56000.000000 employee 2 id : 102 employee 2 name : Jannat khan employee 2 salary : 126000.000000
इस पोस्ट में इतना ही में आशा करता हूँ की आपको इस पोस्ट में काफी हेल्प मिली होगी | अगर आपको कुछ समझ में न आये तो आप टेलीग्राम पर हमसे संपर्क कर सकते है और हमे अपनी प्रोब्लेम्स बता सकते है | आपकी प्रोब्लेम्स का हल जरुर मिलेगा | पोस्ट पसंद आये हो तो कमेंट करके हमे जरुर बताये और अपने क्लासमेट और दोस्तों को भी शेयर करे जिससे उनको भी इस पोस्ट से हेल्प मिले |
धन्यवाद |