C で 2D 配列を返す
C で関数から 2D 配列を返すのは難しい作業になる場合があります。提供されたコードで示されているように、1 つのアプローチでは、以下に示すコードを使用して 2D 配列を返そうとしますが、このアプローチは適切ではありません。
int **MakeGridOfCounts() { int cGrid[6][6] = {{0, }, {0, }, {0, }, {0, }, {0, }, {0, }}; return cGrid; }
代わりに、実行可能なアプローチとして、ポインターを作成して返す必要があります。動的メモリ割り当てを使用する 2D 配列。改善されたコード例でこれがどのように行われるかを見てみましょう:
#include <cstdio> int** create2DArray(unsigned height, unsigned width) { .... }
2D 配列の作成 ( create2DArray() ):
int** array2D = new int*[height]; for (int h = 0; h < height; h++) { array2D[h] = new int[width]; . . . }
配列を返します (create2DArray() ):
メモリのクリーンアップ (main() ):
for (int h = 0; h < height; h++) { delete [] array2D[h]; } delete [] array2D;
このアプローチにより、適切なメモリ管理が確保され、 C の関数からの 2D 配列。
以上がC 関数から 2D 配列を適切に返すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。