यदि आप सी (सी ++ के बजाए) का अध्ययन कर रहे हैं, तो कोई संदर्भ नहीं है।
सी में "संदर्भ द्वारा पास" शब्द का अर्थ केवल यह है कि आप उस सूचक के रूप में एक पॉइंटर पास कर रहे हैं जिसमें मूल्य संग्रहीत किया जाएगा, ताकि फ़ंक्शन इसके मूल्य को बदल सके। अन्यथा, आप मूल्य से गुज़र रहे हैं जिसका अर्थ है कि चर की एक प्रतिलिपि स्टैक पर उत्पन्न होती है और संशोधनों का कोई प्रभाव नहीं पड़ता है।
कई तरीकों से यह जावा में आप जो देखते हैं उसके समान है, सिवाय इसके कि जावा में आपको चीजों को स्पष्ट रूप से एक पॉइंटर में बदलने या उन्हें कम करने की आवश्यकता नहीं है। दूसरे शब्दों में, जब आप एक पॉइंटर पास करते हैं, तो पते को स्टैक पर कॉपी किया जाता है, इसलिए यदि आपका फ़ंक्शन पॉइंटर बदलता है (डेटा को इंगित करने के बजाए), तो फ़ंक्शन के साथ किए जाने पर परिवर्तन गायब हो जाते हैं। इसी तरह, जब आप जावा में किसी ऑब्जेक्ट संदर्भ को पास करते हैं, तो आप ऑब्जेक्ट की सामग्री को बदल सकते हैं (उदा।, फ़ंक्शंस कॉल करके), लेकिन एनोथ ऑब्जेक्ट पर इंगित करने के लिए varialbe को बदलने से आपके जाने के बाद कोई प्रभाव नहीं पड़ेगा।
यदि आप सी ++ (जो सी की तरह दिखते हैं) का उपयोग कर रहे थे, तो आप संदर्भ से गुजर सकते हैं, इस मामले में आपको पॉइंटर्स से निपटने की आवश्यकता नहीं है, और फ़ंक्शन में चर में परिवर्तन वास्तव में बाहरी मान को सीधे बदलते हैं (सिवाय इसके कि आप इसे किसी अन्य चीज़ पर इंगित नहीं कर सकते हैं)।
बहुत, बहुत सच है। यह प्रोग्रामिंग के सबसे गलत समझा पहलुओं में से एक है जिसे मैंने कभी देखा है। – mmcdole
हां, मान द्वारा पारित संदर्भ पहली चीजों में से एक है जो मुझे सी # –
वाह में लटका दिया गया है! धन्यवाद जॉन, उत्कृष्ट जवाब! – neo2862