从C函数返回多个值

从C函数返回多个值,第1张

概述重要提示:请参阅这个非常相关的问题: Return multiple values in C++. 我是如何在ANSI C中做同样的事情的?你会使用结构或传递函数中的参数的地址吗?我追求极其高效(快速)的代码(时间和空间),即使以可读性为代价. 编辑:谢谢你的所有答案.好吧,我想我有一些解释:我正在写这本书,关于特定领域的某个算法子集.我已经为自己设定了一个非常随意的目标,即以可读性和其他方式为代 重要提示:请参阅这个非常相关的问题: Return multiple values in C++.

我是如何在ANSI C中做同样的事情的?你会使用结构或传递函数中的参数的地址吗?我追求极其高效(快速)的代码(时间和空间),即使以可读性为代价.

编辑:谢谢你的所有答案.好吧,我想我有一些解释:我正在写这本书,关于特定领域的某个算法子集.我已经为自己设定了一个非常随意的目标,即以可读性和其他方式为代价,为我的所有算法提供最有效(时间和空间)的实现.这部分是我(一般)问题的本质.

答:我希望我能得到这样的,从(可能)最快到更常见的感觉(所有这些都是先验的,即没有测试):

>将outvalues存储在全局对象中(我会假设像outvals [2]?),或者
>将outvalues传递为函数中的params(foo(int in,int * out1,int * out2)),或者
>返回带有两个outvals的结构,或
>(3)仅当值与语义相关时.

这有意义吗?如果是这样的话,我认为Jason的回答是最接近的,即使他们都提供了一些“谜题”.罗伯特很好,但此时的语义并不是我所追求的(尽管他的建议得到了适当的注意)

谢谢你们.

解决方法 正如尼尔所说,你需要自己判断.

为了避免传递任何东西的成本,请使用全局.接下来最好的是指针/引用传递的单个结构.之后是单独的指针/参考参数.

但是,如果您必须将数据打包到结构中,然后在调用后将其读回,则最好传递单个参数.

如果您不确定,只需使用两种方法编写一些快速测试代码,每次执行几十万次,并计算它们以查看哪种方法最佳.

总结

以上是内存溢出为你收集整理的从C函数返回多个值全部内容,希望文章能够帮你解决从C函数返回多个值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1236522.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存