2D配列へのポインターを受け取り、配列にデータを入力する一連の関数を作成しています
これが私が今それを手に入れた方法です:
17 void m4identity(float *m[4][4]) {
18 *m = (float[4][4]) { { 1, 0, 0, 0 },
19 { 0, 1, 0, 0 },
20 { 0, 0, 1, 0 },
21 { 0, 0, 0, 1 } };
22 }
しかし、残念ながら、コンパイラエラーが発生します。
linalg.c:18:7: error: incompatible types when assigning to type ‘float *[4]’ from type ‘float (*)[4]’
質問:
(*)[4]
との違いは何*[4]
ですか?これを行うためのより良い方法はありますか?
最初は関数内に作成された配列へのポインターを返そうとしましたが、スコープ外になるため、別のコンパイラエラーがスローされました。また、関数内から配列にスペースを割り当てることは避けたいと思います。これは、制御が難しいためです。