两种选择都是合法的,但哪一种更好或更“干净”:
假设我们有这样的结构:
typedef struct MyStruct {
int val;
} MyStruct;
Run Code Online (Sandbox Code Playgroud)
第一个选项;直接返回一个结构体:
MyStruct Create()
{
MyStruct a;
a.val = 0;
return a;
}
Run Code Online (Sandbox Code Playgroud)
第二个选项:在堆上创建结构并返回指针:
MyStruct* CreatePtr()
{
MyStruct *a = (MyStruct*)malloc(sizeof(MyStruct));
a->val = 0;
return a;
}
Run Code Online (Sandbox Code Playgroud)
我认为最好的选择取决于结构的大小,但也许它们是更多需要考虑的事情?