我所理解的是这不应该这样做,但是我相信我见过这样的例子(注意代码在语法上不一定是正确的,但是 idea 是存在的)
typedef struct{
int a,b;
}mystruct;
然后是一个函数
mystruct func(int c, int d){
mystruct retval;
retval.a = c;
retval.b = d;
return retval;
}
我知道如果我们想要做这样的事情,我们应该总是返回一个指向恶意锁定 struct 的指针,但是我肯定我看到过这样的例子.这是对的吗?就我个人而言,我总是返回指向错误锁定的 struct 的指针,或者只是通过引用传递函数并修改那里的值.(因为我的理解是,一旦函数的作用域结束,任何用于分配 struct 的堆栈都可以被覆盖).
让我们为这个问题添加第二个部分:这是否因编译器而异?如果是,那么最新版本的桌面编译器:gcc、g++和Visual Studio的行为是什么?
对这件事有什么 idea ?