このコードを理解しようとしています。私にとって混乱している最初のことは、2行目のコードでは配列の配列を作成していると考えており、そのポインタは配列を指すことになっているということです。2次元配列で作業しているときに列を循環する行を循環する行
私はコンピュータが気にしないことは知っていますが、私にとってポインタの配列を水平にしておき、各配列をその水平線の点から降ろすことができます。
だから、 "dynamicArray = new int * [COLUMNS];"代わりに?
int **dynamicArray = 0;
//行の要素に割り当てられたメモリ。
dynamicArray = new int *[ROWS] ;
//各列の要素に割り当てられたメモリ。
for(int i = 0 ; i < ROWS ; i++)
dynamicArray[i] = new int[COLUMNS];
//割り当てられたメモリ
for(int i = 0 ; i < ROWS ; i++)
delete [] dynamicArray[i] ;
delete [] dynamicArray ;
EDIT解放:私はこれ以上について考え、私はたくさんの上につまずい取得しています事は、私が行と列を考えるということですが間違った道。
dynamicArray =新しいint * [ROWS];
私はこれがポインタの配列であると理解し、各ポインタはカラムを指しています。各列の要素数は行数になります(列は2D配列の各行に1つの垂直要素を持ちます)。 私はこの権利を理解していますか?
2D配列を初期化するためにネストされたforループを使用する必要があるときに、多くの問題が発生します。