ホームページ >バックエンド開発 >C++ >C 関数から 2D 配列を返すにはどうすればよいですか?

C 関数から 2D 配列を返すにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-08 15:36:13336ブラウズ

How Can I Return a 2D Array from a C   Function?

C 関数で 2D 配列を返す

C では、配列や関数を操作するときに、多くの場合、多次元配列を返すことが必要になります。この記事では、C の関数から 2D 配列を返す方法に関する具体的な問題について説明します。

提供されたコード試行 MakeGridOfCounts() は、2D 配列を返すことを目的としていますが、配列の減衰により不十分です。代わりに、2D 配列を適切に返すには、配列へのポインタを返す必要があります。

2D 配列を動的に作成する

静的配列の制限を克服するために、C では多次元配列を作成する方法が提供されています。ダイナミックに。次のコードは、ヒープ上に新しい 2D 配列を作成する方法を示しています。

int** create2DArray(unsigned height, unsigned width) {
  int** array2D = 0;
  array2D = new int*[height];

  for (int h = 0; h < height; h++) {
    array2D[h] = new int[width];

    for (int w = 0; w < width; w++) {
      // fill in some initial values
      array2D[h][w] = w + width * h;
    }
  }

  return array2D;
}

この関数は、高さと幅の 2 つのパラメーターを受け取り、サイズ [高さ x 幅] の新しく作成された 2D 配列へのポインターを返します。 ].

ポインタを返す

関数から動的に作成された 2D 配列を返すには、配列へのポインタを返します。が返されます。このポインタは配列の最初の要素を指し、配列全体へのアクセスを提供します。

int** MakeGridOfCounts() {
  int** cGrid = create2DArray(6, 6);
  return cGrid;
}

メモリ クリーンアップ

動的に割り当てられた配列を操作する場合、忘れずにメモリをクリーンアップすることが重要です。使用後の記憶。そうしないと、メモリ リークが発生する可能性があります。

for (int h = 0; h < height; h++) {
  delete[] my2DArray[h];
}
delete[] my2DArray;
my2DArray = 0;

結論

上記で概説した手法に従うことで、 C の関数から効果的に 2D 配列を返すことができます。静的配列の制限を回避し、使用後に割り当てられたメモリをクリーンアップするために、必ず配列を動的に作成してください。

以上がC 関数から 2D 配列を返すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。