返回一个包含一些浮点数的结构**。你甚至可以传入结构的一个实例。
这意味着被调用的函数不会直接操纵调用者的 float**,我认为这更干净。
我们作为 C 程序员正在解决这个问题,我知道有时我们被限制不使用真正的 C++ 技术。
如果你有(对于任何语法错误,我写 C 已经好几年了)
struct floatCarrier { float **ppFloat1, float **ppFloat2 }
typdef FloatCarrier struct floatCarrier
你的界面现在可以
FloatCarrier myMethod (FloatCarrier in) /* passed by value, as an example */
myMethod 的实现可以使用来自输入 FloatCarrier 的 float**。如果它需要修改数组,那么它会创建一个带有新 float** 实例的新 FloatCarrier,完成后它会返回新的 FloatCarrier。这确实让调用者有责任从返回的结构中获取新的 float**,但不知何故,我喜欢这样,感觉更干净。
至于您是否应该拥有已知数量的成员或数组……您的示例恰好有 2 个参数,因此该结构将有两个成员,但您可以拥有一个数组或任何您喜欢的东西。
它如何解决您的问题:您不再需要更改调用方的浮点数**,因此没有浮点数***。我们使用结构体作为函数只能返回一个值,因此我们将结果打包成一个对象。