float** を含む構造体を返します。構造体のインスタンスを渡すこともできます。
これは、呼び出された関数が呼び出し元の 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 つのパラメーターがあったため、構造体には 2 つのメンバーが含まれますが、配列または好きなものを使用できます。
問題をどのように解決しますか: 呼び出し元の float** を変更する必要がなくなったため、float*** はありません。関数は 1 つの値しか返すことができないため、構造体を使用するため、結果を 1 つのオブジェクトにパッケージ化します。