कारण आपको पहली स्निपेट में चेतावनी नहीं मिल रही है क्योंकि आप (स्थानीय कंपाइलर के परिप्रेक्ष्य से) स्थानीय चर में कोई पता नहीं लौट रहे हैं।
आप int * temp
के मान को वापस कर रहे हैं। भले ही यह चर हो (और इस उदाहरण में) एक मान है जो एक स्थानीय चर का पता है, संकलक यह देखने के लिए कोड निष्पादन स्टैक ऊपर नहीं जायेगा कि यह मामला है या नहीं।
नोट: के टुकड़े की दोनों समान रूप से खराब हैं, भले ही अपने संकलक पूर्व के बारे में चेतावनी नहीं है। इस दृष्टिकोण का प्रयोग न करें।
तुम हमेशा सावधान जब स्थानीय चर के पते लौटने होना चाहिए; एक नियम के रूप में, आप कह सकते हैं कि आप कभी नहीं चाहिए।
static
चर एक अलग मामला है, जिस पर this thread में चर्चा की जा रही है।
स्रोत
2012-01-05 13:40:35
धन्यवाद! और तथ्य यह है कि जब मैं मुख्य रूप से रिटर्न वैल्यू प्रिंट करता हूं तो मुझे सही परिणाम मिल जाता है, इसका वास्तव में इसका मतलब है कि यह जंक प्रिंट करता है? – mary
इसका मतलब है कि आप आम तौर पर * [अपरिभाषित व्यवहार] (http://en.wikipedia.org/wiki/Undefined_behavior) *, यानी के रूप में संदर्भित करते हैं। व्यवहार जो मानक में निर्दिष्ट नहीं है। –