पास-बाय-रेफरेंस और सी पॉइंटर नोटेशन का उपयोग करने के बीच क्या अंतर है?पास-दर-संदर्भ और * के बीच अंतर?
void some_function(some_type& param)
और
void some_function(some_type *param)
धन्यवाद
पास-बाय-रेफरेंस और सी पॉइंटर नोटेशन का उपयोग करने के बीच क्या अंतर है?पास-दर-संदर्भ और * के बीच अंतर?
void some_function(some_type& param)
और
void some_function(some_type *param)
धन्यवाद
जब आप एक सबराउटिन कॉल में चर के लिए पॉइंटर पास करते हैं, तो उस चर का पता subroutine को पास किया जाता है। Subroutine में चर का उपयोग करने के लिए, सूचक को अव्यवस्थित होना चाहिए।
जब आप किसी चर के संदर्भ को पास करते हैं, तो कंपाइलर चर के पते को प्राप्त करने का ख्याल रखता है जब चर subroutine को पास किया जाता है और subroutine में चर को संदर्भित करता है।
अद्भुत! यह बहुत मदद करता है! –
यह निश्चित रूप से एक वाक्य रचनात्मक चीनी नहीं है। मतभेद हैं, जैसा कि आप अन्य उत्तरों से देख सकते हैं। – SadSido
संदर्भ के रूप में दोनों के बीच कई सूक्ष्म अंतर हैं उपनाम है। निचे देखो। –
मूल रूप से आप एक सुरक्षित सूचक को संभालते हैं जैसे कि यह आपकी स्वयं की वस्तु थी।
आप आसानी से एक शून्य सूचक को dereferencing द्वारा एक शून्य संदर्भ प्राप्त कर सकते हैं। – Jherico
रक्षात्मक या पागलपन होने वाली चीजें हैं ?? –
यह आमतौर पर एक गलती का अधिक होता है: आपका संदर्भ उस ऑब्जेक्ट को इंगित करता है जिसे नष्ट कर दिया गया है या कभी अस्तित्व में नहीं है। कुख्यात उदाहरण: 'std :: वेक्टर
मुझे संदेह है कि कोई भी 1000 ट्यूटोरियल और स्पष्टीकरणों में से एक को पुन: उत्पन्न करने जा रहा है जो पहले से मौजूद है। एक नज़र डालें: http://www.parashift.com/c++-faq-lite/references.html – pmr
संभावित डुप्ले: http://stackoverflow.com/questions/57483/difference-between-pointer-variable-and -reference-variable-in-c – Jherico
डुप्लिकेट: http://stackoverflow.com/questions/1322517/passing-a-modifiable-parameter-to-c- कार्यक्षमता – SadSido