मैं इस बारे में सोच रहा हूं क्योंकि स्कोप मुद्दों के कारण। उदाहरण के लिए, कोडक्या रिटर्न स्टेटमेंट कॉपी मान
typedef struct {
int x1;/*top*/
int x2;/*bottom*/
int id;
} subline_t;
subline_t subline(int x1, int x2, int id) {
subline_t t = { x1, x2, id };
return t;
}
int main(){
subline_t line = subline(0,0,0); //is line garbage or isn't it? the reference
//to subline_t t goes out of scope, so the only way this wouldn't be garbage
//is if return copies
}
तो मेरा प्रश्न है, क्या रिटर्न स्टेटमेंट हमेशा कॉपी करेगा? इस मामले में ऐसा लगता है, इसलिए मुझे विश्वास है कि रिटर्न प्रतिलिपि बनाता है। अगर यह प्रतिलिपि करता है, तो क्या यह हर मामले में कॉपी करेगा?
आपके कोड में 'subline_t' के लिए कोई संदर्भ नहीं है (जैसा कि' & '- एक सी ++ संदर्भ) है। –
@gmatt: क्या आप जावा/सी # की तरह सोच रहे हैं, जहां हर वस्तु कुछ का संदर्भ है? यह सी/सी ++ दुनिया में मामला नहीं है। – Donotalo
@ डोनोटलो: आपको सच कहने के लिए, स्थानीय इलाके में एक चर लौटने पर मैं बस सी/सी ++ के व्यवहार को नहीं जानता था। खैर, मुझे पता था कि उदाहरण के लिए पूर्णांक के साथ यह ठीक है, लेकिन मुझे यह भी पता था कि आपको कुछ मामलों में सावधान रहना होगा (जैसे किसी ऑब्जेक्ट को स्थानीय रूप से तत्काल ऑब्जेक्ट पर पॉइंटर लौटना।) मुझे यह नहीं पता था कि सी/सी ++ structs के लिए गोद ले। – ldog