एक सूचक क्या है?
सभी भाषाओं में, एक पॉइंटर एक प्रकार का वैरिएबल होता है, जो मेमोरी एड्रेस को स्टोर करता है, और आप या तो उनसे पूछ सकते हैं कि वे आपके द्वारा बताए गए पते या उनके द्वारा बताए गए पते के मूल्य को बता सकते हैं ।
एक पॉइंटर को एक तरह के बुक मार्क के रूप में माना जा सकता है। सिवाय इसके कि, किसी किताब में पेज पर जल्दी से कूदने के बजाय, एक पॉइंटर का इस्तेमाल मेमोरी के ब्लॉक या मैप ब्लॉक पर नज़र रखने के लिए किया जाता है।
अपने प्रोग्राम की मेमोरी की कल्पना करें जैसे 65535 बाइट्स के एक बड़े सरणी की तरह।
संकेत आज्ञाकारी रूप से इंगित करते हैं
पॉइंटर्स प्रत्येक मेमोरी एड्रेस को याद करते हैं, और इसलिए वे प्रत्येक मेमोरी में एक सिंगल एड्रेस को इंगित करते हैं।
एक समूह के रूप में, पॉइंटर्स मेमोरी पतों को याद करते हैं और याद करते हैं, जो आपके हर कमांड विज्ञापन को मानते हैं।
आप उनके राजा हैं।
सी # में संकेत
विशेष रूप से C # में, एक सूचक एक पूर्णांक चर है जो 0 और 65534 के बीच मेमोरी पता संग्रहीत करता है।
C # के लिए भी विशिष्ट, संकेत प्रकार int के हैं और इसलिए हस्ताक्षर किए गए हैं।
आप नकारात्मक संख्या वाले पतों का उपयोग नहीं कर सकते हैं, लेकिन न ही आप 65534 से ऊपर के पते का उपयोग कर सकते हैं। ऐसा करने का कोई भी प्रयास System.AccessViolationException को फेंक देगा।
MyPointer नामक पॉइंटर को इस तरह घोषित किया जाता है:
int * MyPointer;
C # में एक सूचक एक int है, लेकिन C # में मेमोरी पते 0 से शुरू होते हैं और 65534 तक बढ़ते हैं।
अतिरिक्त विशेष देखभाल के साथ नुकीली चीजों को संभालना चाहिए
असुरक्षित शब्द है उद्देश्य आपको डराना है, और एक बहुत अच्छे कारण के लिए: पॉइंटर्स नुकीली चीजें हैं, और नुकीली चीजें जैसे तलवार, कुल्हाड़ी, पॉइंटर्स, आदि को अतिरिक्त विशेष देखभाल के साथ संभाला जाना चाहिए।
पॉइंटर्स प्रोग्रामर को एक सिस्टम का टाइट कंट्रोल देते हैं। इसलिए की गई गलतियों के अधिक गंभीर परिणाम होने की संभावना है।
पॉइंटर्स का उपयोग करने के लिए, असुरक्षित कोड को आपके प्रोग्राम के गुणों में सक्षम करना पड़ता है, और पॉइंटर्स को विशेष रूप से असुरक्षित के रूप में चिह्नित विधियों या ब्लॉकों में उपयोग करना पड़ता है।
एक असुरक्षित ब्लॉक का उदाहरण
unsafe
{
// Place code carefully and responsibly here.
}
पॉइंटर्स का उपयोग कैसे करें
जब चर या वस्तु घोषित या तात्कालिक होती हैं, तो उन्हें मेमोरी में संग्रहीत किया जाता है।
- * प्रतीक उपसर्ग का उपयोग करके एक सूचक की घोषणा करें।
int *MyPointer;
- एक चर का पता प्राप्त करने के लिए, आप उपसर्ग और प्रतीक का उपयोग करते हैं।
MyPointer = &MyVariable;
एक बार एक पता एक सूचक को सौंपा गया है, निम्नलिखित लागू होता है:
- बिना * उपसर्ग के मेमोरी पतों को संदर्भित करने के लिए उपसर्ग के रूप में इंगित किया जा रहा है।
MyPointer = &MyVariable; // Set MyPointer to point at MyVariable
- इंगित करने के लिए स्मृति पते पर संग्रहीत मान प्राप्त करने के लिए * उपसर्ग के साथ।
"MyPointer is pointing at " + *MyPointer;
चूँकि पॉइंटर एक चर है जो मेमोरी एड्रेस को धारण करता है, इस मेमोरी एड्रेस को पॉइंटर वेरिएबल में स्टोर किया जा सकता है।
बिंदुओं का उदाहरण सावधानीपूर्वक और जिम्मेदारी से उपयोग किया जा रहा है
public unsafe void PointerTest()
{
int x = 100; // Create a variable named x
int *MyPointer = &x; // Store the address of variable named x into the pointer named MyPointer
textBox1.Text = ((int)MyPointer).ToString(); // Displays the memory address stored in pointer named MyPointer
textBox2.Text = (*MyPointer).ToString(); // Displays the value of the variable named x via the pointer named MyPointer.
}
ध्यान दें कि सूचक का प्रकार एक इंट है। ऐसा इसलिए है क्योंकि C # मेमोरी पतों को पूर्णांक संख्याओं (int) के रूप में व्याख्या करता है।
यूंट के बजाय यह इंट क्यों है?
कोई अच्छा कारण नहीं है।
पॉइंटर्स का उपयोग क्यों करें?
पॉइंटर्स बहुत मज़ेदार हैं। कंप्यूटर के बहुत सारे मेमोरी द्वारा नियंत्रित होने के साथ, पॉइंटर्स एक प्रोग्रामर को अपने प्रोग्राम की मेमोरी के अधिक नियंत्रण के साथ सशक्त बनाते हैं।
मेमोरी की निगरानी।
मेमोरी के ब्लॉक को पढ़ने के लिए पॉइंटर्स का उपयोग करें और मॉनिटर करें कि समय के साथ मूल्यों को कैसे बदला जा रहा है।
इन मानों को जिम्मेदारी से बदलें और इस बात पर नज़र रखें कि आपके परिवर्तन आपके कंप्यूटर को कैसे प्रभावित करते हैं।