C++ new 2次元配列の使い方

new演算子による2次元配列の動的メモリ確保は少しクセがあります。

int (*ip)[3] = new int[2][3];    // 2次元配列確保

ip[0][0] = 1;
ip[0][1] = 2;
ip[0][2] = 3;

ip[1][0] = 10;
ip[1][1] = 20;
ip[1][2] = 30;

for (int x = 0; x <= 1; x++) {
	for (int y = 0; y <= 2; y++) {
		printf(" %d", ip[x][y]);
	}
	printf("\n");
}

delete[] ip;
 1 2 3
 10 20 30

int (*ip)[3] = new int[2][3];

確保したい領域は、そのまま指定できますが、
受け取りポインタの書き方に注意です。

もし、new int[5][10]; のような場合、
受け取りポインタは int (*ip)[10] と書きます。

各要素へのアクセスは、
通常の2次元配列と同じように[]を2つ指定すればOKです。

メモリを解放するときは、
delete[] ip; のように記述します。


これでnewを使った2次元配列の
動的メモリ確保ができるようになりました。

タイトルとURLをコピーしました