Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ पॉइंटर्स का उपयोग करके किसी भिन्न फ़ंक्शन से लोकल वेरिएबल को कैसे एक्सेस करें?


आप एक बार स्कोप से बाहर जाने के बाद लोकल वेरिएबल को एक्सेस नहीं कर सकते। लोकल वेरिएबल होने का यही अर्थ है। हालांकि, आइए एक ऐसे उदाहरण को देखें जहां आप एक लोकल वेरिएबल की मेमोरी को इसके स्कोप के बाहर एक्सेस करने में सक्षम हो सकते हैं।

उदाहरण

#include<iostream> int* foo() {    int x = 3;    return &x; } int main() {    int* address = foo();    cout << *address;    *address = 12;    cout << *address; }

आउटपुट

यह आउटपुट दे सकता है:

3 12

जैसा कि मैंने पहले उल्लेख किया है, यह कोड काम कर सकता है। हम केवल उस मेमोरी को पढ़ और लिख रहे हैं जो x का पता हुआ करती थी। main में, आप foo के स्कोप के बाहर हैं, पता किसी रैंडम मेमोरी एरिया का पॉइंटर है। उपरोक्त उदाहरण में, वह मेमोरी एरिया मौजूद है और फिलहाल कुछ भी उसका उपयोग नहीं कर रहा है। आप इसका उपयोग जारी रखकर कुछ भी नहीं तोड़ते (आप किसी अन्य प्रोसेस के मेमोरी एरिया या किसी अन्य अनधिकृत मेमोरी एरिया का उपयोग नहीं करेंगे), और अभी तक किसी और चीज ने इसे ओवरराइट नहीं किया है। इसलिए, 3 अभी भी वहां है।

एक वास्तविक प्रोग्राम में, उस मेमोरी को लगभग तुरंत पुनः उपयोग किया जा सकता है और आप ऐसा करके कुछ तोड़ देंगे। ऐसे मेमोरी एक्सेस बग्स को ट्रैक करना और मारना बहुत मुश्किल होता है।

जब आप foo से रिटर्न करते हैं, तो प्रोग्राम OS को बताता है कि x की मेमोरी अब उपयोग नहीं की जा रही है और इसे किसी और चीज को रीअसाइन किया जा सकता है। यदि आप भाग्यशाली हैं और यह रीअसाइन हो जाता है, और OS आपको इसका फिर से उपयोग करते हुए नहीं पकड़ता, तो आप इससे बच सकते हैं।


  1. OpenCV में C++ का उपयोग करके रेखा कैसे बनाएं? OpenCV में C++ का उपयोग करके रेखा कैसे बनाएं?

    रेखा बनाने के लिए हमें दो बिंदुओं की आवश्यकता होती है - प्रारंभिक बिंदु और अंतिम बिंदु। हमें रेखा खींचने के लिए एक कैनवास की भी आवश्यकता होती है। OpenCV का उपयोग करके, मैट्रिक्स हमारा कैनवास है, हमें रेखा के प्रारंभिक और अंतिम बिंदुओं को परिभाषित करने की आवश्यकता होती है। हमें रेखा को एक रंग निर्दिष

  1. OpenCV में C++ का उपयोग करके इमेज को अलग-अलग चैनलों में कैसे विभाजित करें? OpenCV में C++ का उपयोग करके इमेज को अलग-अलग चैनलों में कैसे विभाजित करें?

    RGB इमेज में तीन चैनल होते हैं - लाल, हरा और नीला। वह रंग स्थान जहां लाल, हरे और नीले चैनल इमेज को दर्शाते हैं, RGB रंग स्थान कहलाता है। OpenCV में, RGB के बजाय BGR क्रम का उपयोग किया जाता है। इसका मतलब है कि पहला चैनल नीला है, दूसरा चैनल हरा है, और तीसरा चैनल लाल है। RGB इमेज को अलग-अलग चैनलों में

  1. OpenCV में C++ का उपयोग करके इमेज कैसे लोड करें और दिखाएं? OpenCV में C++ का उपयोग करके इमेज कैसे लोड करें और दिखाएं?

    इस विषय में, हम निर्धारित करेंगे कि C++ में OpenCV का उपयोग करके इमेज कैसे लोड करें और दिखाएं। OpenCV में इमेज लोड करने और दिखाने के लिए निम्नलिखित फ़ंक्शन आवश्यक हैं। Mat: Mat कोई फ़ंक्शन नहीं है। यह एक डेटा संरचना है, एक प्रकार का वेरिएबल। C++ में int, char, string वेरिएबल प्रकारों की तरह, Mat Op