"static const"
“static const” मूल रूप से static (एक स्टोरेज स्पेसिफायर) और const (एक टाइप क्वालिफायर) का संयोजन है।
static वेरिएबल के जीवनकाल और दृश्यता/पहुंच को निर्धारित करता है। इसका मतलब है कि यदि कोई वेरिएबल static वेरिएबल के रूप में घोषित किया गया है, तो यह प्रोग्राम चलने तक पूरे समय मेमोरी में रहेगा, जबकि सामान्य या ऑटो वेरिएबल तब नष्ट हो जाते हैं जब फ़ंक्शन (जहां वेरिएबल परिभाषित किया गया था) समाप्त हो जाता है।
const एक टाइप क्वालिफायर है। एक टाइप क्वालिफायर का उपयोग टाइप सिस्टम के माध्यम से एक मान के बारे में अतिरिक्त जानकारी व्यक्त करने के लिए किया जाता है। जब किसी वेरिएबल को const टाइप क्वालिफायर का उपयोग करके इनिशियलाइज़ किया जाता है, तो यह अपने मान में आगे किसी भी बदलाव को स्वीकार नहीं करेगा।
तो static और const को मिलाकर, हम कह सकते हैं कि जब किसी वेरिएबल को static const का उपयोग करके इनिशियलाइज़ किया जाता है, तो यह प्रोग्राम के निष्पादन तक अपना मान बनाए रखेगा और साथ ही, यह अपने मान में किसी भी बदलाव को स्वीकार नहीं करेगा।
उदाहरण
#include<iostream> using namespace std; int main(){ int input = 10; static const int value = 5; input += value; cout << input; return 0; } "#define"
प्रीप्रोसेसर कमांड को DIRECTIVES कहा जाता है, और पाउंड या हैश सिंबल (#) से शुरू होते हैं। # से पहले कोई व्हाइट स्पेस नहीं होना चाहिए, और अंत में सेमीकोलन की आवश्यकता नहीं है।
कई चीजें हैं जो प्रीप्रोसेसिंग चरण के दौरान की जा सकती हैं जिनमें शामिल हैं
#include डायरेक्टिव के माध्यम से अन्य फाइलों को शामिल करना
#define डायरेक्टिव के माध्यम से सिम्बोलिक कॉन्स्टेंट और मैक्रोज़ की परिभाषा
कुछ प्रीप्रोसेसर डायरेक्टिव्स के माध्यम से आप कुछ प्रीप्रोसेसर डायरेक्टिव्स को सशर्त रूप से कंपाइल या निष्पादित भी कर सकते हैं।
नोट - C++ प्रोग्राम का प्रीप्रोसेसिंग चरण प्रोग्राम के कंपाइल होने से पहले होता है। C++ प्रीप्रोसेसर एक प्रोग्राम है जो सोर्स कोड के कंपाइल होने से पहले निष्पादित होता है।
आप पहले से ही #include प्रीप्रोसेसर डायरेक्टिव के साथ काम करना सीख चुके हैं जो आपको अपने प्रोग्राम में वांछित हेडर फाइलों को शामिल करने देता है। यह चर्चा #define प्रीप्रोसेसर डायरेक्टिव को समर्पित है।
#define प्रीप्रोसेसर हमें सिम्बोलिक नाम और कॉन्स्टेंट परिभाषित करने की अनुमति देता है। उदाहरण के लिए,
#define PI 3.14159
यह स्टेटमेंट प्रोग्राम में PI की हर घटना को 3.14159 में अनुवाद करेगा।
C++ #define उदाहरण
अब पूर्ण उदाहरण पर विचार करें जिसमें PI की हर घटना #define डायरेक्टिव के साथ परिभाषित मान 3.14159 से बदल जाएगी।
Input: PI 3.14159 Output: Area of Circle 314.15
उदाहरण
#include<iostream> using namespace std; #define PI 3.14159 int main() { int r = 10; float cir; cir = PI * (r * r); cout<<"Area of Circle: "<<cir<<endl; } "enum"
enum एक यूजर-डिफाइंड डेटा टाइप है जहां हम एक वेरिएबल के लिए मानों का एक सेट निर्दिष्ट करते हैं और वेरिएबल केवल संभावित मूल्यों के एक छोटे सेट में से एक ले सकता है। हम एन्यूमरेशन को परिभाषित करने के लिए enum कीवर्ड का उपयोग करते हैं।
enum direction {East, West, North, South}dir; यहां एन्यूमरेशन नाम direction है जो केवल चार निर्दिष्ट मूल्यों में से एक ले सकता है, घोषणा के अंत में dir एक enum वेरिएबल है।
आइए इसे समझने के लिए एक सरल उदाहरण लें:
यहां मैंने enum वेरिएबल dir को मान West असाइन किया है और जब मैंने dir का मान प्रदर्शित किया तो यह 1 दिखाता है। ऐसा इसलिए है क्योंकि डिफ़ॉल्ट रूप से मान 0 से शुरू होने वाले बढ़ते क्रम में होते हैं, जिसका अर्थ है East 0 है, West 1 है, North 2 है और South 3 है।
Input: direction {East, West, North, South} dir=West Output: 1 उदाहरण
#include<iostream> using namespace std; enum direction {East, West, North, South} dir; int main(){ dir = West; cout<<dir; return 0; } enum वेरिएबल घोषित करने का एक और तरीका
जैसा कि हमने उपरोक्त उदाहरण में देखा कि मैंने enum घोषणा के दौरान enum वेरिएबल dir घोषित किया है, enum वेरिएबल घोषित करने का एक और तरीका है।
उदाहरण
#include <iostream> using namespace std; enum direction {East, West, North, South}; int main() { direction dir; dir = South; cout<<dir; return 0; } आउटपुट
3
C++ में enum का उपयोग क्यों करें
अब जब हम समझ गए हैं कि enum क्या है और प्रोग्राम में उनका उपयोग कैसे करें, आइए चर्चा करें कि हम उनका उपयोग क्यों करते हैं:
Enums का उपयोग केवल तब किया जाता है जब हम वेरिएबल से संभावित मूल्यों के सेट में से एक होने की उम्मीद करते हैं, उदाहरण के लिए, हमारे पास एक dir वेरिएबल है जो दिशा रखता है। चूंकि हमारे पास चार दिशाएं हैं, यह वेरिएबल चार मूल्यों में से कोई भी ले सकता है, यदि हम इस वेरिएबल को कोई अन्य यादृच्छिक मान असाइन करने का प्रयास करते हैं, तो यह एक कंपाइलेशन त्रुटि फेंक देगा। यह कंपाइल-टाइम चेकिंग बढ़ाता है और अमान्य कॉन्स्टेंट पास करने से होने वाली त्रुटियों से बचाता है।
एक और महत्वपूर्ण स्थान जहां वे अक्सर उपयोग किए जाते हैं वे स्विच केस स्टेटमेंट्स हैं, जहां केस ब्लॉक्स द्वारा अपेक्षित सभी मानों को एक enum में परिभाषित किया जा सकता है। इस तरह हम यह सुनिश्चित कर सकते हैं कि स्विच पैरेंथेसिस में पास किया गया enum वेरिएबल कोई ऐसा यादृच्छिक मान नहीं ले रहा है जिसे उसे स्वीकार नहीं करना चाहिए।