अधिकांश परिदृश्य में परिभाषा स्वचालित रूप से एक घोषणा है। अब आइए विस्तृत तुलना चार्ट के साथ परिभाषा और घोषणा के बीच के अंतर को समझते हैं।
तुलना चार्ट
तुलना के लिए आधार | परिभाषा | घोषणा |
---|---|---|
बुनियादी | चर, फ़ंक्शन या वर्ग में संग्रहीत मान को निर्धारित करता है। | चर, कार्य, वर्ग आदि का नाम और प्रकार निर्दिष्ट करता है। |
स्मृति आवंटन | तब होता है | नहीं होता है। |
दुहराव | यदि यह पहले से ही परिभाषित है, तो कथन को फिर से परिभाषित नहीं किया जा सकता है। | पुनर्वितरण आसानी से संभव हो सकता है। |
क्षेत्र | अवधि निर्धारित की जाती है | दृश्यता निर्दिष्ट है |
परिभाषा की परिभाषा
परिभाषा वेरिएबल, फंक्शन, क्लास, वगैरह के नाम से जुड़े कोड या डेटा की पहचान करती है। घोषित इकाई के लिए भंडारण स्थान आवंटित करने के लिए कंपाइलर द्वारा परिभाषा आवश्यक है। जब एक चर को परिभाषित किया जाता है, तो यह उस चर के लिए कई बाइट्स से मिलकर स्मृति की मात्रा रखता है। एक फ़ंक्शन परिभाषा फ़ंक्शन के लिए कोड का उत्पादन करती है। हम प्रोग्राम प्रोग्राम को केवल एक बार प्रोग्राम में परिभाषित कर सकते हैं क्योंकि परिभाषा प्रोग्राम एलिमेंट का एक विशिष्ट विनिर्देश है। घोषणा और परिभाषा के बीच संबंध एक-से-कई हो सकते हैं ।
कुछ स्थितियों में, एक प्रोग्राम एलिमेंट को परिभाषित नहीं किया जा सकता है लेकिन घोषित किया जाता है, उदाहरण के लिए जब कोई फ़ंक्शन कभी लागू नहीं होता है या इसका पता कभी भी उपयोग नहीं किया जाता है, भले ही यह घोषित हो। एक अन्य उदाहरण वह है जिसमें कक्षा की परिभाषा का उपयोग नहीं किया गया है जबकि इसे घोषित किया जाना चाहिए।
घोषणा की परिभाषा
घोषणा का उपयोग कार्यक्रम के नामों को निर्दिष्ट करने के लिए किया जाता है जैसे कि एक चर, फ़ंक्शन, नाम स्थान, वर्ग आदि का नाम। किसी भी नाम का बिना किसी घोषणा के कार्यक्रम में उपयोग नहीं किया जा सकता है। कार्यक्रम तत्वों को परिभाषा के विपरीत कई बार घोषित किया जा सकता है। कई घोषणाएं केवल तभी प्राप्त की जा सकती हैं जब समान प्रारूप का उपयोग करके विभिन्न घोषणाएं की जाती हैं। घोषणा, कार्यक्रम के तत्व को संकलक के परिप्रेक्ष्य में दृश्यता प्रदान करने का माध्यम है।
घोषणा परिभाषा के उद्देश्य को पूरा करती है, केवल कुछ मामलों में हालत निहित नहीं होती है जो नीचे दी गई हैं।
- जब स्थिर डेटा सदस्य को एक वर्ग घोषणा के अंदर घोषित किया जाता है, उस स्थिति में, यह एक घोषणा नहीं है। क्योंकि यह कक्षा की सभी वस्तुओं के लिए केवल एक प्रति उत्पन्न करता है और स्थिर डेटा सदस्य किसी दिए गए वर्ग प्रकार की वस्तुओं के घटक होते हैं।
- यदि एक घोषणा टाइपडिफ बयान है।
- एक वैरिएबल को इनिशियलाइज़र या फंक्शन बॉडी के बिना घोषित किया जाता है लेकिन इसमें एक्सटर्नल स्पेसर शामिल हैं। यह इंगित करता है कि परिभाषा अन्य फ़ंक्शन के लिए हो सकती है और नाम बाहरी लिंकेज प्रदान करती है।
- कक्षा का नाम घोषित किए बिना परिभाषा जैसे कि कक्षा टी;
आमतौर पर, घोषणा एक दायरे में होती है । गुंजाइश घोषित नाम की दृश्यता और परिभाषित वस्तु अवधि तय करती है।
परिभाषा और घोषणा के बीच मुख्य अंतर
- एक कार्यक्रम तत्व की परिभाषा उस तत्व से जुड़े मूल्य को निर्धारित करती है। दूसरी ओर, एक प्रोग्राम एलिमेंट की घोषणा इसके नाम और प्रकार को कंपाइलर के लिए निर्दिष्ट करती है।
- प्रोग्राम एलिमेंट की परिभाषा में मेमोरी की कुछ मात्रा होती है जबकि घोषणा में मेमोरी एलोकेशन शामिल नहीं होता है।
- एक प्रोग्राम एलिमेंट को कई बार घोषित किया जा सकता है। इसके विपरीत, परिभाषा में प्रोग्राम तत्व के नाम के साथ एक विशिष्ट विनिर्देश शामिल होता है जिसे किसी भी कोड या डेटा द्वारा अलग किया जा सकता है।
- घोषणा में स्कोप चर, कार्य, वस्तु, वर्ग, गणना आदि की दृश्यता का वर्णन करता है, इसके विपरीत, परिभाषा में दायरा अवधि से संबंधित है।
उदाहरण उदाहरण
- परिवर्तनीय परिभाषा और साथ ही घोषणा:
int r = 10;
- कार्य की परिभाषा:
int add (इंट x, int y) {int a; a = x + y; एक वापसी; }
घोषणा उदाहरण
- परिवर्तनीय घोषणा:
extern int r;
- समारोह की घोषणा:
int add (int p1, int p2);
निष्कर्ष
घोषणा प्रक्रिया का उपयोग प्रोग्राम तत्व को संकलक के लिए दृश्यमान बनाने के लिए किया जाता है, और इसके लिए मेमोरी आवंटित करने की आवश्यकता नहीं होती है। विपरीत परिभाषा एक घोषणा है कि आरक्षित भंडारण, सरल शब्दों में संकलक घोषित इकाई के लिए स्मृति स्थान रखता है।