6

2 次元配列を **pointer に割り当てる方法は? これが私がやりたいことのアイデアです

int arrray [2][3];
int **pointer = array;
so pointer[0][1]= 1;

助けて?前もって感謝します

4

2 に答える 2

19

次のようにポインタを宣言します。

int (*pointer)[3] = array;

しかし、これはC++ では非常に厄介です。一般的な目的が何であるかを説明すれば、おそらくより良い解決策 (ベクトルなどを含むもの) を見つけることができます。

于 2012-04-15T20:09:55.470 に答える
7

簡単な答えは、できないということです。二次元配列は、各行を保持するメモリの連続ブロックですが、ポインタへのポインタは、整数を含む別のメモリ位置へのポインタがあるメモリ位置を参照できます。

一方、必要な方法で要素へのポインターを保持する別のデータ構造を作成できます (つまり、ポインターの配列を作成し、それらのポインターを各行の先頭に初期化し、そのポインターの配列へのポインターを使用します)。としてpointer)、しかしそれはまったく役に立ちませんが、むしろすべてを不必要に複雑にします.

この疑問はおそらく、配列とポインターは同じであるというよくある誤解から来ていますが、そうではありません。配列は、配列の最初の要素へのポインターに減衰する可能性があります (かなり頻繁にそうなります) が、そのポインターの型は最初の要素の型です。2 次元配列では、最初の要素の型は内部配列であり、基本要素型ではありません。

于 2012-04-15T20:15:37.610 に答える