由于范围问题,我想知道这一点。例如,考虑代码
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
}
所以我的问题是,return 语句会一直复制吗?在这种情况下,它似乎有效,所以我被引导相信 return 确实复制了。如果它确实复制,它会在每种情况下都复制吗?