0

私が知っている多次元配列を動的に割り当てる2つの方法を次に示します。

int (*numbers)[4] = new int[3][4]

int **numbers = new int*[3]; 

これら 2 つはメモリ内で同じものを表していますか? 実際、それらは何をどのように表しているのでしょうか? (メモリダイアグラムは本当に役に立ちます!)

4

1 に答える 1

3

いいえ、最初は 12 個の int (3*4) を作成し、メモリ内で順番に配置されます。2 番目は、整数への 3 つのポインターを作成します。

つまり、最初は次のようにレイアウトされます

[1,2,3,4][5,6,7,8][9,10,11,12]

したがって、整数の 3 4 要素配列がありますが、2 番目の例は次のようになります。

[0x12345678,0x12345678,0x12345678]

つまり、整数への 3 つの初期化されていないポインター

于 2012-10-17T04:10:08.670 に答える