आमतौर पर, यह कोई मुद्दा नहीं है, लेकिन विचार करने के लिए कुछ चीजें हैं। यह आम तौर पर कॉन्स-शुद्धता का मामला है, जिसका मतलब है कि आप क्या बदल सकते हैं और आप क्या नहीं कर सकते हैं इसका ट्रैक रखना।
यदि आप एक डबल-उद्धृत स्ट्रिंग लौट रहे हैं, तो यह const char *
है, और इसे किसी और चीज की तरह परेशानी के लिए निमंत्रण है। ऐसी स्ट्रिंग को बदलना अपरिभाषित व्यवहार है, लेकिन आमतौर पर प्रोग्राम को उस स्ट्रिंग को क्रैश या बदलने का कारण बनता है जहां इसे संदर्भित किया जाता है।
यदि आप स्टैक पर एक वर्ण सरणी लौटाते हैं (यानी, एक बुलाया गया फ़ंक्शन का स्थानीय चर), तो यह दूर हो जाएगा, और पॉइंटर कुछ समय में खराब परिणामों के साथ विशेष रूप से कुछ भी इंगित नहीं करेगा।
यदि कॉल किया गया फ़ंक्शन कुछ ऐसा लौटा रहा है जो पहले से ही const char *
है, तो इसे char *
पर बदलना एक कलाकार की आवश्यकता है। इसके अलावा, यदि आप वास्तव में इसे बदलने जा रहे हैं, तो आपको यह सुनिश्चित करना होगा कि यह परिवर्तनीय है। इसे const char *
के रूप में रखना आमतौर पर बेहतर होता है।
malloc()
या new
साथ आबंटित स्मृति लौटने के साथ तत्काल कोई समस्या नहीं है, लेकिन आप स्वामित्व की समस्या है: क्या समारोह free()
/delete
यह, कब, और क्या आप संभव प्रतियां के बारे में क्या करते हो जाना चाहिए? यह वह जगह है जहां सी ++ के स्मार्ट पॉइंटर्स चमकते हैं।
स्रोत
2009-09-14 15:03:18
मुख्य() हमेशा int वापस करना चाहिए! http://users.aber.ac.uk/auj/voidmain.shtml – nmuntz