これらの宣言があると仮定します。
int** a;
int b[x][y];
関数を実装できますか
foo f(bar c) {}
それは私を可能にします
f(a);
f(b);
それをオーバーロードする必要はありませんか?
これらの宣言があると仮定します。
int** a;
int b[x][y];
関数を実装できますか
foo f(bar c) {}
それは私を可能にします
f(a);
f(b);
それをオーバーロードする必要はありませんか?
確かに、使用してvoid*
ください:)
そして、あなたの質問に答えるために、いいえ。多次元配列は、ポインターへのポインターと同じではありません。その理由は、索引付けスキームです。int b [2][2]
4つの整数の連続メモリブロックです。インデックスを作成することは、次のようになります。
b[i][j] == *(b + 2*i + j)
2番目の次元はタイプ定義の一部です!コンパイラは、配列のメモリレイアウトにより、必要な間接参照が1つだけであることを認識しています。
一方、int** a
インデックス作成は次のように行われます。
a[i][j] == *(*(a+i)+j)