我的理解是不应该这样做,但我相信我已经看到过这样做的示例(注意代码不一定在语法上正确,但想法就在那里)
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)的行为是什么?
对此事的想法?
这是完全安全的,这样做也没有错。另外:它不会因编译器而异。
通常,当(如您的示例)您的结构不太大时,我认为这种方法甚至比返回 malloc'ed 结构更好(malloc
是一项昂贵的操作)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)