c - Why is it bad to return an auto (internal scope) pointer? -


संभव डुप्लिकेट:

जितना अधिक मैं इस बारे में सोचता हूं, कम मुझे यकीन है कि ऐसा क्यों नहीं एक अच्छा विचार है ... कंपाइलर कॉलर को फ़ंक्शन वापसी के अंदर से एक ऑटो वैरिएबल होने के बारे में शिकायत करता है। उदाहरण के लिए:

  चार * foo () {चार बार [11]; Fgets (बार, 10, stdin); वापसी बार; }   

बनाम:

  चार बार [11]; Char * foo () {fgets (बार, 10, stdin); वापसी बार; }   

मैं शायद ज्यादा समझ नहीं कर रहा हूं मैं अंदर एक सूचक घोषणा होने की समस्या को काफी समझ में नहीं आता है, क्या कॉलर बस स्मृति पते को नहीं मानता?

अपने पहले उदाहरण में, सरणी बार फ़ंक्शन के लिए स्थानीय है, ताकि फ़ंक्शन रिटर्न के बाद यह किसी भी अधिक मौजूद न हो। इसलिए परिणामी संकेतक किसी भी उपयोगी बात को इंगित करने की संभावना नहीं है, क्योंकि जो बिंदु पर इस्तेमाल होता है वह अब मौजूद नहीं है।

Comments