Programming in C / C ++: Use of Pointers

कार्य करने के लिए संदर्भ से तर्क देने के लिए संकेतक
मान लीजिए हमारे पास एक ऐसा फ़ंक्शन है जो 2 नंबरों के साथ कुछ गणना करता है जो हम पास करते हैं, यह आपका कथन है:

शून्य गणना (इंट पहले, इंट सेकेंड)
{
पहले + = 10;
दूसरा + = 20;
}

मूल रूप से यह समारोह पहले तर्क और 10 से 20 तक जोड़ता है।

हम कोड की निम्नलिखित पंक्ति निष्पादित करते हैं:

int first = 0, दूसरा = 0;
गणना (प्रथम, दूसरा);
printf (“प्रथम:% i, दूसरा:% i”, प्रथम, दूसरा);

किसका आउटपुट है: “प्रथम: 0, दूसरा: 0″।

हमने संकेत के रूप में हमारे वैरिएबल के मूल्यों को क्यों नहीं बदला है? इसका कारण यह है कि सी में हमारे मूल्यों को हमने जो मूल्य दिया है, वह मूल्य से पारित किया जाता है, अर्थात, हम जो तर्क के रूप में दर्ज करते हैं, उसकी एक प्रति देते हैं। यही कारण है कि हमारे चर का मूल्य संशोधित नहीं है, क्योंकि फ़ंक्शन में जो कुछ हम संशोधित करते हैं वह उस फ़ंक्शन में ही संशोधित रहेगा।

हमारे चर के मूल्य को बदलने के लिए, हम, संदर्भ द्वारा इन चरों गुजरना होगा यानी हमारे चर के समारोह के लिए एक संदर्भ पारित, हमारे मामले में हम उनमें से स्मृति पता, यानी, एक सूचक पारित करेंगे।

याद रखें कि एक चर के मेमोरी एड्रेस को एक्सेस करने के लिए हमने लिखा “और वेरिएबल”, इसलिए, हम गणना फ़ंक्शन को कॉल करने के लिए ऐसा करेंगे:

गणना (और प्रथम, और दूसरा);

अब, क्या हम समारोह के लिए जा रहे पूर्णांक (int) नहीं है, अन्यथा पूर्णांक (int *) टाइप सूचक, इसलिए हम अपने बयान में परिवर्तन करना होगा ताकि यह इस तरह दिखता है:

शून्य गणना (पूर्णांक * पहले, पूर्णांक * दूसरा)
{
पहले + = 10;
दूसरा + = 20;
}

अब हम इसका विश्लेषण करते हैं:

पहले + = 10;

हम जानते हैं कि यह पहली बार एक सूचक है, इसलिए, हम क्या कर का अधिक उपयोग से ऊपर नहीं है लिखने के बाद से हम स्मृति का पता करने के लिए और न उस दिशा है, जो हम क्या चाहते हैं में निहित मूल्य 10 जोड़ रहे हैं। इसलिए, अंतिम कार्य इस तरह दिखना चाहिए:

शून्य गणना (पूर्णांक * पहले, पूर्णांक * दूसरा)
{
* पहले + = 10;
* दूसरा + = 20;
}

अब अगर हम अपना कोड निष्पादित करते हैं, तो यह उत्पादन करता है: “पहले: 10, दूसरा: 20″।

पॉइंटर्स के साथ व्यवस्था
हमने सिर्फ संकेतकों की उपयोगिता देखी, अब हम एक और देखेंगे: फिक्स्ड बनाने के लिए पॉइंटर्स का उपयोग करें और उनके साथ काम करें। जैसा कि हम जानते हैं, यदि हम 5 पूर्णांकों की एक सरणी को घोषित करना चाहते हैं, तो इसे मूल्यों से भरें और स्क्रीन पर दिखाएं, हम इसे निम्नलिखित तरीके से कर सकते हैं:

पूर्णांक संख्या [5] = {0,1,2,3,4};
int i;
के लिए (i = 0; i <5; i ++)
printf (“% i”, संख्या [i]);

यह प्रोग्राम निम्नलिखित उत्पादन का उत्पादन करता है: “0 1 2 3 4”

अब, निम्न कोड देखें:

पूर्णांक संख्या [5] = {0,1,2,3,4};
int i;
int * सूचक = नंबर;
के लिए (i = 0; i <5; i ++) {
printf (“% i”, * पॉइंटर);
सूचक ++;
}

यदि आप इसे निष्पादित करते हैं, तो आप देखेंगे कि यह एक ही आउटपुट का उत्पादन करता है। इस के लिए स्पष्टीकरण यह है कि एक व्यवस्था केवल चर है कि अगले एक-दूसरे से स्मृति में व्यवस्थित कर रहे हैं, के रूप में निम्न तालिका (जो पाश देने से पहले हमारे चरों के मान से मेल खाती है) में दिखाया गया है:

हमारे पास 5 वेरिएबल हैं जिन्हें नंबर कहा जाता है (मैं एक ही नाम डालता हूं ताकि विचार समझा जा सके)। ये 5 वेरिएबल्स, जो व्यवस्था की संख्या से मेल खाती हैं, के अनुरूप हैं। अगर हमें पता सूचक मूल्य 100 है, जो सरणी के पहले तत्व से मेल खाती है, इसलिए संख्या यह एक सूचक है, जो सरणी हम बनाने के पहले तत्व की ओर इशारा करता है।

समझ गए इस लूप के पहले चक्र में अर्थपूर्ण होनी चाहिए, कार्यक्रम, हमें उत्पादन 0 से पता चलता है, क्योंकि यह क्या पता 100 इस के बाद, हम एक पंक्ति है कि कहते हैं, “सूचक ++” है शामिल हैं। यह क्या बदलाव करता है, जो इंगित करता है कि उस दिशा के आगे दिये गये निर्देश, जो कि, 110 है।

अब हम मेमोरी आरक्षित करने के लिए पॉइंटर्स का उपयोग करेंगे, जो एक सरणी बनाने के बराबर है।

कोड की रेखा:

पूर्णांक संख्या [5];

5 पूर्णांक के लिए आरक्षित स्थान, निम्नानुसार संकेतक का उपयोग करके लिखा जा सकता है:

int * संख्या = (int *) malloc (sizeof (int) * 5);

[Tipexperto title = “नोट”] malloc समारोह का उपयोग करने के पुस्तकालय “stdlib.h” सी या “cstdlib” C ++ शामिल करने के लिए आवश्यक है। [/ Tipexperto]

चलो इस कोड का विश्लेषण करते हैं

हमारे पास एक सूचक है जो एक पूर्णांक को इंगित करता है, कुछ नहीं जो हमने पहले नहीं देखा है उसके बाद, हम पूरी तरह से अज्ञात (या हो सकता है आप पता नहीं क्या इसके लिए था के साथ पहले इस्तेमाल किया) कुछ, वाक्य है “(int *) malloc (sizeof (int) * 5);”।

Malloc, स्मृति की मात्रा है कि संकेत मिलता है आरक्षण, इस मामले में की एक समारोह है 5 बार एक पूर्णांक के वजन, जिसका वजन है 4 बाइट, आप से पूछना कारण है कि हम सीधे नहीं लिखते “malloc (20)”?, आरक्षित कर रहे हैं इसका जवाब यह है कि एक पूर्णांक में उन सभी कंप्यूटरों के लिए एक ही वजन नहीं होता है जिसमें यह प्रयोग किया जाता है। हम आरक्षित स्थान के लिए एक भूमिका है और क्या देता है पहले बुकर तत्व करने के लिए एक सूचक है, लेकिन समस्या यह है कि प्रकार के “शून्य *” (याद रखें कि शून्य कोई प्रकार का मतलब है) है, इसलिए, हम करने के लिए एक डाली बनाने “इंट *” लाइन के साथ “(इंट *)”

You may also like...

1 Response

  1. 2017

    […] Previous story Programming in C / C ++: Use of Pointers […]

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

error: Content is protected !!