gpt4 book ai didi

C:将信息从函数传递到调用例程的最佳实践

转载 作者:太空宇宙 更新时间:2023-11-04 06:40:46 24 4
gpt4 key购买 nike

在函数中创建哪种信息传回方式是首选?

一个)

create_b_from_a(... a, struct b *my_b) { ... }

int main() {
struct b my_b;
... define and create a ...
create_b_from_a(a, &my_b);
... work on b ...
}

B)

struct st *create_b_from_a(... a)
{
struct st *my_b = malloc(sizeof *my_b);
...
}

int main()
{
struct b *my_b = create_b_from_a(a);
... work on b ...
free(b);
}

我想我记得类似“尽可能避免使用 malloc”之类的话,但另一方面 B 对我来说看起来更现代。也许我不知道其中一种方法的优点/缺点?

最佳答案

不要忘记结构是值,因此您不限于这两者。您还可以:

struct b create_b_from_a(struct a an_a)
{
struct b new_b;

new_b.field = value; /* and so on ... */

return new_b;
}

这也可以带来更简洁的代码,因为它更直接,不会在(微)管理上花费太多代码。

当然,如果编译器认为在目标体系结构上实际传递堆栈上的结构效率极低,则可以针对此模式进行优化。

关于C:将信息从函数传递到调用例程的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8523919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com