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

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

DDD
DDDオリジナル
2024-12-15 10:20:11678ブラウズ

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

C で 2D 配列を返す関数の実装

提供されたコード スニペットは関数から 2D 配列を返そうとしますが、配列の宣言に問題があります。これを修正するために、より包括的なソリューションを導入できます。

#include <iostream>
using namespace std;

// Returns a pointer to a newly created 2D array with dimensions [height x width]
int** MakeGridOfCounts(int height, int width) {
  int** grid = new int*[height];  // Dynamically allocate an array of pointers to rows
  
  for (int i = 0; i < height; i++) {  // Allocate each row and set its columns to 0
    grid[i] = new int[width];
    fill_n(grid[i], width, 0);
  }
  
  return grid;
}

int main() {
  int** grid = MakeGridOfCounts(6, 6);  // Get a 6x6 grid (initialized with 0s)
  
  // Do something with the grid...

  // Release allocated memory
  for (int i = 0; i < 6; i++) {
    delete[] grid[i];
  }
  delete[] grid;
  
  return 0;
}

このソリューションでは、メモリ管理技術を使用して 2D 配列を動的に割り当て、適切なメモリ処理を保証します。 fill_n 関数は、配列の各要素を 0 に初期化するために使用されます。メモリの割り当てと割り当て解除は同じスコープ内 (この場合は main 関数内) で実行する必要があることに注意してください。

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

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