मैं थोड़ा उलझन में हूं कि पॉइंटर्स कैसे काम करते हैं।सी ++ पासिंग पॉइंटर टू फंक्शन (हाउटो) + सी ++ पॉइंटर मैनिपुलेशन
चलो कहते हैं कि मैं निम्नलिखित समारोह और सूचक है, और ...
संपादित:
... मैं समारोह में एक तर्क के रूप किसी वस्तु के लिए एक सूचक का उपयोग करना चाहते।
यानी .:
void Fun(int Pointer){
int Fun_Ptr = ---Passed Pointer---;
//So that Fun_Ptr points to whatever ---Passed Pointer points to
बीच * सूचक और & सूचक अंकन, मैं बहुत उलझन में हूँ। मुझे पता है कि * सूचक का मतलब है जो कुछ भी इंगित करता है।
क्या मैं घोषणा में शून्य (int * सूचक) डालता हूं। जब मैं फ़ंक्शन का उपयोग करता हूं तो क्या होगा?
आपकी सहायता की सराहना की जाती है।
संपादित करें 2:
ठीक है, अब मैं समझ एक घोषणा में उपयोग कर * चर इसका मतलब है कि एक सूचक पारित हो जाएगा। हालांकि, जब मैं फ़ंक्शन का उपयोग करता हूं तो क्या होगा?
यानी
int main(){
int foo;
int *bar;
bar = foo;
Fun(bar);
}
संपादित करें 3: ठीक है, तो मुझे ठीक कर लें मैं गलत हूँ:
ऊपर कोड की परंपराओं के अनुसार:
बार = & foo साधन : मेमोरी
* बार = foo का अर्थ है टी बदलें वह मूल्य है कि बार अंक के बराबर करने के लिए जो कुछ भी foo के बराबर होती है
अगर मैं एक दूसरे सूचक (int * दौलत) तो है,:
बार = दौलत का अर्थ है: दौलत सूचक को बार अंक
बार = * दौलत का अर्थ है: मूल्य के लिए बार अंक कि दौलत अंक के लिए, लेकिन दौलत सूचक ही
* बार के लिए नहीं = * दौलत का अर्थ है: मूल्य मूल्य के लिए करने के लिए है कि बार अंक बदल कि दौलत अंक के
& बार = & ओओफ़ का अर्थ है: मेमोरी एड्रेस को बदलें जो बार पॉइंट्स को मेमोरी एड्रेस के समान ही है जो
क्या मुझे यह अधिकार है?
संपादित करें 4: आपकी सभी मदद के लिए धन्यवाद (मेरी इच्छा है कि मैं 1 से अधिक उत्तर स्वीकार कर सकूं, लेकिन मुझे पहले के साथ जाना होगा। मुझे यकीन नहीं है कि एक समुदाय विकी वास्तव में कैसे काम करता है, लेकिन मैं छोड़ दूंगा संपादन के लिए यह तरीका (यदि आपको पसंद है तो इसे एक रेफरी गाइड में बदलने के लिए स्वतंत्र महसूस करें)।
आपका दूसरा संपादन लगभग सही है, हालांकि – Tomas
"क्या यह सही है?"। नहीं। आप 'बार' को 'foo'' के बराबर * नहीं चाहते हैं, आप इसे * * foo' पर इंगित करना चाहते हैं। यह ऑपरेटर के पते के साथ किया जाता है। 'बार = &foo;'। –
बार = foo, अमान्य है, क्योंकि foo एक int है और एक पॉइंटर बार है। सही कोड "बार = और foo" है क्योंकि एक सूचक के रूप में, बार केवल स्मृति पते को एक int नहीं स्टोर कर सकता है। टिप्पणी के उत्तरों के लिए खेद है। – Tomas