Looking for pointers Answers? Try Ask4KnowledgeBase
Looking for pointers Keywords? Try Ask4Keywords

pointersसंकेत के साथ शुरू हो रही है


टिप्पणियों

यह अनुभाग इंगित करता है कि संकेत क्या है, और क्यों एक डेवलपर इसका उपयोग करना चाहता है।

यह भी संकेत के भीतर किसी भी बड़े विषयों का उल्लेख करना चाहिए, और संबंधित विषयों के लिए लिंक करना चाहिए। चूंकि पॉइंटर्स के लिए दस्तावेज़ीकरण नया है, इसलिए आपको उन संबंधित विषयों के प्रारंभिक संस्करण बनाने की आवश्यकता हो सकती है।

पॉइंटर्स के साथ शुरुआत करना

पॉइंटर्स वे वेरिएबल होते हैं जो दूसरे वेरिएबल के एड्रेस को स्टोर करते हैं। लैंग्वेज फीचर, वे कई प्रोग्रामिंग लैंग्वेजेज में उपलब्ध होते हैं, जैसे कि:

  • जाओ
  • C / C ++
  • एडीए
  • पास्कल
  • C # (कुछ बाधाओं के तहत उपलब्ध)
  • कोबोल
  • FORTRAN

C / C ++ पॉइंटर्स के साथ आरंभ करने के लिए, इन चरणों का पालन करें

  1. विंडोज के लिए मिनिमलिस्टिक जीएनयू जैसे संकलक स्थापित करें, http://www.mingw.org/wiki/Getting_Started

  2. उदाहरण के लिए कमांडलाइन के माध्यम से g ++ बाइनरी के इंस्टॉलेशन फ़ोल्डर में जाएं:

    C:\MinGW\bin>
     

3. एक पाठ फ़ाइल बनाएँ और इस C ++ प्रोग्राम लिखें

#include <iostream>

int main () {

   int  pointed=0;
   int* ptr = & pointed;

   std::cout<<"Address of pointed variable is: "<<ptr<<std::endl;

   return 0;
}
 
  1. Pointer.cpp के रूप में सहेजें। कमांड प्रॉम्प्ट पर 5. कमांड चलाएं

g ++ -o pointer.exe -c pointer.cpp

  1. वर्किंग डायरेक्टरी में आपको pointer.exe के रूप में एक निष्पादन योग्य मिलेगा, रनिंग पर यह exe कुछ आउटपुट देगा जैसे

इंगित चर का पता है: 0x7e892dac0a0c

यदि आप उपरोक्त आउटपुट प्राप्त करते हैं, तो आपने अपना पहला पॉइंटर प्रोग्राम लिखा है

एक सूचक क्या है?

यह मूल रूप से स्मृति में एक चर का पता है। यह हमें अप्रत्यक्ष रूप से एक चर का उपयोग करने की अनुमति देता है। तो पॉइंटर्स का उपयोग करके हम एक चर के पते के बारे में बात कर सकते हैं (साथ ही पॉइंटर को डीफ्रॉफ़ेंस करके इसके मूल्य)। वे तब उपयोगी होते हैं जब हम किसी मेमोरी लोकेशन के पते के बजाय उसके मूल्य से निपटना चाहते हैं।

सी में निम्नलिखित सरल स्वैप फ़ंक्शन पर विचार करें:

void Swap(int firstVal, int secondVal)
{
 int tempVal = firstVal;
 firstVal = secondVal;
 secondVal = tempVal;
}
 

अब मुख्य में अगर हमारे पास निम्न कोड है:

.
.
int a = 9,b = 100;
swap(a,b);
//print a and b
.
.
 

A और b के मान अपरिवर्तित रहेंगे क्योंकि मुख्य फ़ंक्शन में उनके मूल्यों को प्रिंट करके स्पष्ट किया जाएगा। बजाय चर का मान पास करने का सही ढंग से अदला-बदली समारोह को लागू करने के लिए, a और b , हम चर एक और रूप में ख का पता पारित:

swap(&a,&b);
 

ऑपरेटर & वैरिएबल का पता देता है। इस तरह इसका इस्तेमाल किया:

int *address_of_a = &a;
 

int *address_of_a , बताता है कि चर address_of_a एक पूर्णांक चर के पते (भंडार के पते) को इंगित करता है।

अब हमारा सही स्वैप फंक्शन होगा:

void Swap(int *firstaddress, int *secondaddress)
{
 int tempVal = *firstaddress;
 *firsaddress = *secondaddress;
 *secondaddress = tempVal;
}
 

अब इंटरचेंज किए गए मान मुख्य कार्य में परिलक्षित होंगे:

int a = 9,b = 100;
swap(&a,&b);
//print
 

तुम हमेशा का उपयोग कर संकेतक भिन्नता कर सकते हैं * , अगर तुम न मूल चर है। मान लीजिए यदि किसी फ़ंक्शन में आपके पास मूल चर नहीं है, लेकिन इसका पता एक सूचक चर int *x । हम केवल मेमोरी एड्रेस के value = *x को value = *x रूप में एक्सेस कर सकते हैं;

यदि हमारे पास पॉइंटर्स नहीं थे तो हम कभी भी C संदर्भ में पास का अनुकरण नहीं कर सकते थे, क्योंकि C मान से पास होता है । लेकिन याद रखें कि हम केवल अनुकरण कर सकते हैं, क्योंकि जब हम पॉइंटर्स का उपयोग करते हैं, तो int *firstaddress, int *secondaddress केवल स्थानीय पॉइंटर वैरिएबल बनाए जाते हैं, जिनमें वेरिएबल a और b