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