सी में डेटा प्रकार
एक डेटा प्रकार उस प्रकार के डेटा को निर्दिष्ट करता है जिसे एक वैरिएबल स्टोर कर सकता है जैसे कि पूर्णांक, फ्लोटिंग, कैरेक्टर, आदि।
मूल आंकड़ा प्रकार
बुनियादी डेटा प्रकार पूर्णांक-बेस्ड और फ्लोटिंग-पॉइंट बेस्ड होते हैं। C भाषा साइन किए गए और बिना साइन वाले लिट्रल को सपोर्ट करती है।
बुनियादी डेटा प्रकारों का मेमोरी आकार 32 या 64-बिट ऑपरेटिंग सिस्टम के अनुसार बदल सकता है।
चलो बुनियादी डेटा प्रकारों को देखते हैं। इसका आकार 32-बिट आर्किटेक्चर के अनुसार दिया गया है।
paunaZ:
पूर्णांक ऐसे संपूर्ण संख्याएँ होती हैं जिनमें कोई अंश या दशमलव भाग नहीं होते, और paunaZ डेटा प्रकार उनका प्रतिनिधित्व करने के लिए उपयोग होता है।
यह अक्सर उन चर के लिए लागू होता है जिनमें मान होते हैं, जैसे कि गिनतियाँ, अनुक्रमांक, या अन्य संख्याएँ। paunaZ डेटा प्रकार सकारात्मक और नकारात्मक दोनों प्रकार की संख्याओं का प्रतिनिधित्व कर सकता है क्योंकि यह डिफ़ॉल्ट रूप से साइन किया जाता है।
अधिकांश उपकरणों पर एक paunaZ 4 बाइट का मेमोरी स्पेस लेता है, जिससे यह लगभग -2 अरब से +2 अरब के बीच के मानों को संग्रहीत कर सकता है।
चार:
व्यक्तिगत कैरक्टरों का प्रतिनिधित्व कैर डाटा प्रकार द्वारा किया जाता है। आमतौर पर इसका उपयोग ASCII या UTF-8 एन्कोडिंग स्कीम के कैरक्टरों को होल्ड करने के लिए किया जाता है, जैसे कि अक्षर, संख्या, प्रतीक, या कोमा। एक एकल कैर द्वारा 256 कैरक्टरों का प्रतिनिधित्व किया जा सकता है, जो एक बाइट मेमोरी का उपयोग करता है। कैरक्टर जैसे 'A', 'b', '5', या '$' को एकल उद्धरण में रखा जाता है।
व्यक्तिगत कैरक्टरों का प्रतिनिधित्व कैर डाटा प्रकार द्वारा किया जाता है। आमतौर पर इसका उपयोग ASCII या UTF-8 एन्कोडिंग स्कीम के कैरक्टरों को होल्ड करने के लिए किया जाता है, जैसे कि अक्षर, संख्या, प्रतीक, या कोमा। एक एकल कैर द्वारा 256 कैरक्टरों का प्रतिनिधित्व किया जा सकता है, जो एक बाइट मेमोरी का उपयोग करता है। कैरक्टर जैसे 'A', 'b', '5', या '$' को एकल उद्धरण में रखा जाता है।
पूर्णांकों का प्रतिनिधित्व करने के लिए, फ्लोटिंग डेटा प्रकार का उपयोग करें। फ्लोटिंग संख्याओं का उपयोग भिन्नात्मक इकाइयों या दशमलव स्थानों वाली संख्याओं का प्रतिनिधित्व करने के लिए किया जा सकता है।
फ्लोट प्रकार आमतौर पर उन चर के लिए उपयोग किया जाता है जिन्हें बहुत अच्छी सटीकता की आवश्यकता होती है लेकिन वे बहुत सटीक नहीं हो सकते। यह लगभग 6 दशमलव स्थानों की सटीकता और 4 बाइट्स की मेमोरी में लगभग 3.4 x 10^38 का रेंज रख सकता है।
पूर्णांकों का प्रतिनिधित्व करने के लिए, फ्लोटिंग डेटा प्रकार का उपयोग करें। फ्लोटिंग संख्याओं का उपयोग भिन्नात्मक इकाइयों या दशमलव स्थानों वाली संख्याओं का प्रतिनिधित्व करने के लिए किया जा सकता है।
फ्लोट प्रकार आमतौर पर उन चर के लिए उपयोग किया जाता है जिन्हें बहुत अच्छी सटीकता की आवश्यकता होती है लेकिन वे बहुत सटीक नहीं हो सकते। यह लगभग 6 दशमलव स्थानों की सटीकता और 4 बाइट्स की मेमोरी में लगभग 3.4 x 10^38 का रेंज रख सकता है।
दो फ्लोटिंग संख्याओं को दर्शाने के लिए दो डेटा प्रकारों का उपयोग करें। जब अधिक सटीकता की आवश्यकता होती है, जैसे कि वैज्ञानिक गणनाओं या वित्तीय अनुप्रयोगों में, यह फ्लोट की तुलना में अधिक सटीकता प्रदान करता है।
डबल प्रकार, जो 8 बाइट मेमोरी का उपयोग करता है और लगभग 15 दशमलव स्थानों की सटीकता रखता है, बड़े मान देता है। यदि कोई स्पष्ट प्रकार नहीं दिया गया है, तो C स्वचालित रूप से फ्लोटिंग पॉइंट संख्याओं को डबल के रूप में मानता है।
paunaZ Aayau = 25;
AxarF Xaenai = 'P';
ApaunaZ taapamaana = 98.6;
AMk Anaukrnaiya = 3.14159265359;
उदाहरण में, हमने चार वेरिएबल घोषित किए: व्यक्ति की उम्र के लिए एक paunaZ वेरिएबल, छात्र के ग्रेड के लिए एक AxarF वेरिएबल, तापमान माप के लिए एक ApaunaZ वेरिएबल, और नंबर पाई के लिए दो वेरिएबल।
व्युत्पन्न आंकड़ा प्रकार
मूल डेटा प्रकारों के अलावा, C डेवलपर डेटा प्रकारों का समर्थन करता है, जिसमें एरे, पॉइंटर्स, स्ट्रक्चर्स, और यूनियन्स शामिल हैं। ये डेटा प्रकार प्रोग्रामरों को मिश्रित डेटा को संभालने, मेमोरी को सीधे संशोधित करने, और जटिल डेटा संरचनाएँ बनाने की क्षमता देते हैं।
सरणी:
एक एरे, जो एक व्युत्पन्न डेटा प्रकार है, आपको समान प्रकार के निश्चित आकार के तत्वों का एक अनुक्रम संग्रहित करने की अनुमति देता है। यह एक तंत्र प्रदान करता है जिसके द्वारा आप समान डेटा के कई लक्ष्यों को एक ही नाम के तहत जोड़ सकते हैं।
इंडेक्स का उपयोग एरे के तत्वों तक पहुंचने के लिए किया जाता है, जिसमें पहले प्रवेश के लिए 0 इंडेक्स होता है। एरे का आकार घोषणाकाल में निश्चित होता है और प्रोग्राम के निष्पादन के दौरान इसे बदल नहीं जा सकता। एरे के घटक पड़ोसी मेमोरी क्षेत्रों में रखे जाते हैं।
यहां एक एरे को घोषित करने और उपयोग करने का एक उदाहरण है:
उदाहरण
#samaahitaF <PsaTidiAayaAae.Pca>
paunaZ mauqyaF() {
paunaZ naMbar[5]; // vaanai Pk paunaZaMk sarnai saaYa P Aakar ka 5 tatvaaeM
// saaIMpanaa maana kae sarnai tatvaaeM
naMbar[0] = 10;
naMbar[1] = 20;
naMbar[2] = 30;
naMbar[3] = 40;
naMbar[4] = 50;
// pzaDSaZna maana saMgazhita maeM sarnai
mauDznama("maana maeM sarnai: ");
kurftae (paunaZ maIM = 0; maIM < 5; maIM++) {
mauDznama("%paunaZ ", naMbar[maIM]);
}
mauDznama("\n");
naivaZtanama 0;
}
आउटपुट
maana maeM sarnai: 10 20 30 40 50
सूचक:
एक पॉइंटर एक व्युत्पन्न डेटा प्रकार है जो किसी अन्य डेटा प्रकार के मेमोरी पते पर नज़र रखता है। जब पॉइंटर घोषित किया जाता है, तो पहले उस डेटा प्रकार का नाम दिया जाता है जिसकी वह बात कर रहा है, और फिर चर के नाम के पहले एक तारांकित चिह्न (*) लगाया जाता है।
आप पॉइंटर्स का उपयोग करके गलत तरीके से एक चर का मान बदल सकते हैं, जब आप उस चर का मेमोरी पता निर्दिष्ट करते हैं। पॉइंटर्स का सामान्यत: कार्यों के पॉइंटर, डेटा संरचनाओं, और गतिशील मेमोरी आवंटन जैसी कार्यों में उपयोग होता है।
यहां एक पॉइंटर घोषित करने और इसका उपयोग करने का एक उदाहरण है:
उदाहरण
#samaahitaF <PsaTidiAayaAae.Pca>
paunaZ mauqyaF() {
paunaZ AMkitaRkrnaa = 42; // Pk paunaZaMk car
paunaZ *paiTiAar; // vaanai P saucak kae Pk paunaZaMk
paiTiAar = # // pzaDanaRkrtaiRhI pataa ka 'AMkitaRkrnaa' kae saucak
// PKsaesaRkrnaa kimata ka 'AMkitaRkrnaa' kaRUpayaaegaRkrtaeRhuP saucak
mauDznama("kimata ka AMkita krnaa: %paunaZ\n", *paiTiAar);
naivaZtanama 0;
}
आउटपुट
kimata ka AMkitaRkrnaa: 42
संरचना:
एक संरचना (Structure) एक व्युत्पन्न डेटा प्रकार है जो कई डेटा प्रकारों को एक नाम के तहत समूहित करके संयोजित डेटा प्रकार बनाने की अनुमति देती है। यह आपको विभिन्न प्रकार के चर (variables) को जोड़कर अपने अद्वितीय डेटा संरचनाएँ बनाने की क्षमता देती है।
एक संरचना के सदस्यों या क्षेत्रों का उपयोग प्रत्येक चर को संदर्भित करने के लिए किया जाता है। किसी भी डेटा प्रकार, जिसमें विभिन्न संरचनाएँ भी शामिल हैं, एक संरचना का सदस्य हो सकता है।
संरचना के सदस्यों तक पहुंचने के लिए डॉट (.) ऑपरेटर का उपयोग किया जाता है। यहां संरचना की घोषणा और उपयोग का प्रदर्शन किया गया है:
उदाहरण
#samaahitaF <PsaTidiAayaAae.Pca>
#samaahitaF <SabDF.Pca>
// pariBaaSaitaRkrnaa P saMrcanaa kaRpzatainaioaitva P vyaKtai
ejatanabaja vyaKtai {
AxarF naama[50];
paunaZ Aayau;
ApaunaZ UfMcaaEZ;
};
paunaZ mauqyaF() {
// pzacaar P car ka pzakar ejatanabaja vyaKtai
ejatanabaja vyaKtai camataevaD1;
// saaIMpanaa maana kae saMrcanaa saDsyaaeM
SabD_paztailaipai(camataevaD1.naama, "jana hrinai");
camataevaD1.Aayau = 30;
camataevaD1.UfMcaaEZ = 1.8;
// PKsaesaRkrnaa saMrcanaa saDsyaaeM
mauDznama("naama: %SabDF\n", camataevaD1.naama);
mauDznama("Aayau: %paunaZ\n", camataevaD1.Aayau);
mauDznama("UfMcaaEZ: %.2i\n", camataevaD1.UfMcaaEZ);
naivaZtanama 0;
}
आउटपुट
naama: jana hrinai
Aayau: 30
UfMcaaEZ: 1.80
संघ:
एक व्युत्पन्न डेटा प्रकार जिसे यूनियन कहा जाता है, आपको एक ही मेमोरी पते में विभिन्न डेटा प्रकारों को संग्रहीत करने में सक्षम बनाता है। संरचनाओं के विपरीत, जहां प्रत्येक सदस्य के पास एक अलग मेमोरी स्पेस होता है, एक यूनियन के सदस्य सभी एक एकल मेमोरी स्पेस साझा करते हैं। एक मूल्य केवल किसी भी समय किसी संघ के एक सदस्य द्वारा आयोजित किया जा सकता है। जब आपको कई डेटा प्रकारों का परस्पर प्रतिनिधित्व करने की आवश्यकता होती है, तो यूनियनों को काम आता है। संरचनाओं की तरह, आप डॉट (।) ऑपरेटर का उपयोग करके एक संघ के सदस्यों तक पहुंच सकते हैं। यहाँ एक संघ घोषित और उपयोग किए जाने का एक उदाहरण है:
उदाहरण
#samaahitaF <PsaTidiAayaAae.Pca>
// pariBaaSaitaRkrnaa P mailana kaRpzatainaioaitva P saMqyaatmak kimata
mailana saMqyaatmak {
paunaZ EMTvaIlyau;
ApaunaZ laaeTvaIlyau;
AxarF sTiMgaRvaIlyau[20];
};
paunaZ mauqyaF() {
// pzacaar P car ka pzakar mailana saMqyaatmak
mailana saMqyaatmak kimata;
// saaIMpanaa P kimata kae mailana
kimata.EMTvaIlyau = 42;
// PKsaesaRkrnaa mailana saDsyaaeM
mauDznama("paunaZaMk kimata: %paunaZ\n", kimata.EMTvaIlyau);
// naiyata P Alaga kimata kae mailana
kimata.laaeTvaIlyau = 3.14;
// PKsaesaRkrnaa mailana saDsyaaeM
mauDznama("taIrnaa kimata: %.2i\n", kimata.laaeTvaIlyau);
naivaZtanama 0;
}
आउटपुट
paunaZaMk kimata: 42
taIrnaa kimata: 3.14
गणना आंकड़ा प्रकार
नामित स्थिरांक या एन्यूमरेटर का एक सेट जो कनेक्टेड मानों के संग्रह का प्रतिनिधित्व करता है, उसे सी में परिभाषित किया जा सकता है, जिसे एन्यूमरेशन डेटा प्रकार (ENUM) का उपयोग करके सी में परिभाषित किया जा सकता है। गणना आपको उन नामों को देने के लिए साधन देती है जो अभिन्न मूल्यों के एक समूह को समझ में आता है, जो आपके कोड को पढ़ने और बनाए रखने में आसान बनाता है।
उदाहरण
#samaahitaF <PsaTidiAayaAae.Pca>
// pariBaaSaitaRkrnaa Pk gananaa kurftae Dina ka saptaah
saucaiF KMlaevaiumamaa {
saaemavaar,
maMgalavaar,
bauoavaar,
gaurfvaar,
Saukzvaar,
Sanaivaar,
rvaivaar
};
paunaZ mauqyaF() {
// pzacaar P car ka pzakar saucaiF KMlaevaiumamaa
saucaiF KMlaevaiumamaa Aaja;
// saaIMpanaa P kimata sae gananaa
Aaja = bauoavaar;
// PKsaesaRkrnaa gananaa kimata
mauDznama("Aaja hI %paunaZ\n", Aaja);
naivaZtanama 0;
}
आउटपुट
Aaja hI 2
शून्य डेटा प्रकार
C भाषा में शून्य डेटा प्रकार का उपयोग किसी विशेष प्रकार की कमी को दर्शाने के लिए किया जाता है। फ़ंक्शन रिटर्न प्रकार, फ़ंक्शन पैरामीटर, और पॉइंटर्स तीन स्थितियां हैं जहां इसका अक्सर उपयोग किया जाता है।
फ़ंक्शन रिटर्न टाइप:
एक शून्य वापसी प्रकार फ़ंक्शन एक मान का उत्पादन नहीं करता है। एक शून्य फ़ंक्शन एक कार्य या क्रिया को निष्पादित करता है और एक मूल्य वापस करने के बजाय समाप्त होता है।
उदाहरण
riKta pzainYaelaae() { mauDznama("namastae, Dunaiyaa!\n"); }
फ़ंक्शन पैरामीटर:
पैरामीटर शून्य का उपयोग यह इंगित करने के लिए किया जा सकता है कि एक फ़ंक्शन कोई तर्क स्वीकार नहीं करता है।
उदाहरण
riKta pzakziyaa(riKta) { /* samaaraeh takZR-saMbaMoai */ }
पॉइंटर्स:
किसी भी पते को टाइप शून्य*के पॉइंटर में संग्रहीत किया जा सकता है, जिससे यह एक सार्वभौमिक सूचक है। यह अस्पष्ट या एटिपिकल प्रकारों के लिए संकेत के साथ काम करने के लिए एक विधि प्रदान करता है।
उदाहरण
riKta* deTapT;
शून्य डेटा प्रकार उन कार्यों को परिभाषित करने के लिए सहायक होता है जो जेनेरिक पॉइंटर्स के साथ काम करते समय किसी भी तर्क को स्वीकार नहीं करते हैं या जब आप संकेत देना चाहते हैं कि एक फ़ंक्शन एक मान वापस नहीं करता है। यह ध्यान रखना महत्वपूर्ण है कि शून्य* का उपयोग जेनेरिक पॉइंटर्स बनाने के लिए किया जा सकता है, शून्य को स्वयं को एक चर प्रकार के रूप में घोषित नहीं किया जा सकता है।
उदाहरण
#samaahitaF <PsaTidiAayaAae.Pca>
// samaaraeh saaYa riKta naivaZtanama pzakar
riKta pzainYaelaae() {
mauDznama("namastae, Dunaiyaa!\n");
}
// samaaraeh saaYa riKta paIramaiTr
riKta pzakziyaa(riKta) {
mauDznama("pzasaMskrna EnapauT...\n");
}
paunaZ mauqyaF() {
// klaiMga P riKta samaaraeh
pzainYaelaae();
// klaiMga P samaaraeh saaYa riKta paIramaiTr
pzakziyaa();
// kaRUpayaaegaRkrtaeRhuP P riKta saucak
paunaZ saMqyaa = 10;
riKta* deTapT = &saMqyaa;
mauDznama("kimata ka saMqyaa: %paunaZ\n", *(paunaZ*)deTapT);
naivaZtanama 0;
}
आउटपुट
namastae, Dunaiyaa!
pzasaMskrna EnapauT...
kimata ka saMqyaa: 10
निष्कर्ष:
नतीजतन, सी प्रोग्रामिंग भाषा में डेटा प्रकार आवश्यक हैं क्योंकि वे जानकारी के प्रकार को परिभाषित करते हैं जो चर को पकड़ सकते हैं। वे डेटा का आकार और प्रारूप प्रदान करते हैं, जिससे कंपाइलर को मेमोरी आवंटित करने और आवश्यक कार्यों को अंजाम देने में सक्षम बनाता है। C द्वारा समर्थित डेटा प्रकारों में शून्य, गणना, व्युत्पन्न और बुनियादी प्रकार शामिल हैं। फ्लोट और डबल जैसे फ्लोटिंग-पॉइंट प्रकारों के अलावा, सी में बुनियादी डेटा प्रकारों में इंटेगर-आधारित प्रकार जैसे इंट, चार और छोटा भी शामिल है। इन रूपों को हस्ताक्षरित या अहस्ताक्षरित किया जा सकता है, और वे आकार और सीमा में उतार -चढ़ाव करते हैं। भरोसेमंद और कुशल कोड बनाने के लिए, इन प्रकारों के मेमोरी आकार और दायरे को समझना महत्वपूर्ण है। व्युत्पन्न डेटा प्रकारों के कुछ उदाहरण यूनियन, पॉइंटर्स, स्ट्रक्चर और एरेज़ हैं। एक ही तरह के कई तत्वों को सरणियों के कारण सन्निहित स्मृति में एक साथ संग्रहीत किया जा सकता है। पॉइंटर्स मेमोरी पते पर नज़र रखते हैं, जो तेजी से डेटा संरचना संचालन और गतिशील मेमोरी आवंटन के लिए अनुमति देते हैं। जबकि यूनियनों ने कई चर को समान मेमोरी स्पेस साझा करने की अनुमति दी है, संरचनाएं समूह प्रासंगिक चर को एक साथ साझा करती हैं। कोड अधिक सुपाठ्य और बनाए रखने योग्य हो जाता है जब नामांकित स्थिरांक को गणना डेटा प्रकारों का उपयोग करके परिभाषित किया जाता है। संबंधित डेटा के सार्थक प्रतिनिधित्व को सक्षम करने के लिए एन्यूमरेशन नामित स्थिरांक पूर्णांक मान देते हैं। शून्य डेटा प्रकार एक विशेष प्रकार की कमी को इंगित करता है। इसका उपयोग कार्यों और फ़ंक्शन मापदंडों दोनों के लिए एक रिटर्न प्रकार के रूप में किया जाता है जो कोई तर्क नहीं लेते हैं और एक मान वापस नहीं करते हैं। शून्य* पॉइंटर एक सामान्य सूचक के रूप में भी कार्य करता है जो विभिन्न प्रकार के पते को संग्रहीत कर सकता है। सी प्रोग्रामिंग के लिए डेटा प्रकारों की ठोस समझ की आवश्यकता होती है। प्रोग्रामर पर्याप्त मेमोरी आवंटन सुनिश्चित कर सकते हैं, डेटा ओवरफ्लो या ट्रंकेशन से बच सकते हैं, और सही डेटा प्रकार का चयन करके उनके कोड की पठनीयता और रखरखाव को बढ़ा सकते हैं। सी प्रोग्रामर प्रभावी, भरोसेमंद और अच्छी तरह से संरचित कोड बना सकते हैं जो डेटा प्रकारों की दृढ़ समझ रखने से उनके अनुप्रयोगों की आवश्यकताओं को पूरा करता है।