代码之家  ›  专栏  ›  技术社区  ›  Dervin Thunk

从C函数返回多个值

  •  6
  • Dervin Thunk  · 技术社区  · 15 年前

    重要的 :请看这个非常相关的问题: Return multiple values in C++ .

    我在找如何用ANSI C做同样的事情?您将使用结构还是传递函数中参数的地址?我在追求非常高效(快速)的代码(时间和空间),即使以可读性为代价。

    编辑 :谢谢你的回答。好吧,我想我应该得到一些解释:我写这本书是关于一个特定领域的特定算法子集的。我已经为自己设定了一个非常任意的目标,那就是以可读性和其他东西为代价,为我所有的算法在网络上实现最有效的(时间和空间)实现。这在一定程度上是我(一般)问题的性质。

    回答 :我希望我能直截了当地说出来,从(可能)最快到更普通的感官(所有这些都是先验的,即没有测试的):

    1. 在全局对象中存储outValues(我假设outVals[2]?)或
    2. 在函数(foo(int-in,int*out1,int*out2))中将outvalues作为参数传递,或者
    3. 返回包含两个outvals的结构,或者
    4. (3)仅当这些值在语义上相关时。

    这有道理吗?如果是这样的话,我认为杰森的反应是最接近的,尽管他们都提供了一些“谜题”。罗伯特的建议很好,但此时语义不是我想要的(尽管他的建议被适当地指出了)。

    谢谢大家。

    11 回复  |  直到 6 年前