我想创建一个函数,我在其中更改已存在的结构。所以该函数的返回值应该是一个struct。如果我想要一个int
作为返回值,我会调用函数" int example()
" ...如果我想返回结构,如何调用该函数?因为" struct"已经采取了 - 我已经采取" struct whatever
"创建一个。
答案 0 :(得分:7)
如果希望函数修改现有结构,则应该通过指针传递结构:
void modify_thing(struct whatever *thing);
如果要返回结构的修改后的副本,可以按值返回结构:
struct whatever edit_thing(const struct whatever *input);
请注意,通过指针而不是值传递struct变量通常更有效。
答案 1 :(得分:0)
按值传递结构将导致编译器在内存中建立一个或多个只能用于该函数的保留区域。
每个存储区都由编译器插入对memcpy()的调用来操纵。
将指针传递给struct更好,然后返回struct update操作成功/失败的简单指示。