为了账号安全,请及时绑定邮箱和手机立即绑定

从函数返回一个二维数组

从函数返回一个二维数组

C++
HUWWW 2019-08-28 09:34:33
从函数返回一个二维数组嗨,我是C ++的新手,我试图从一个函数返回一个二维数组。就是这样的int **MakeGridOfCounts(int Grid[][6]){   int cGrid[6][6] = {{0, }, {0, }, {0, }, {0, }, {0, }, {0, }};   return cGrid;}
查看完整描述

3 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

此代码返回2d数组。

 #include <cstdio>

    // Returns a pointer to a newly created 2d array the array2D has size [height x width]

    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
                  // (filling in zeros would be more logic, but this is just for the example)
                  array2D[h][w] = w + width * h;
            }
      }

      return array2D;
    }

    int main()
    {
      printf("Creating a 2D array2D\n");
      printf("\n");

      int height = 15;
      int width = 10;
      int** my2DArray = create2DArray(height, width);
      printf("Array sized [%i,%i] created.\n\n", height, width);

      // print contents of the array2D
      printf("Array contents: \n");

      for (int h = 0; h < height; h++)
      {
            for (int w = 0; w < width; w++)
            {
                  printf("%i,", my2DArray[h][w]);
            }
            printf("\n");
      }

          // important: clean up memory
          printf("\n");
          printf("Cleaning up memory...\n");
          for (  h = 0; h < height; h++)
          {
            delete [] my2DArray[h];
          }
          delete [] my2DArray;
          my2DArray = 0;
          printf("Ready.\n");

      return 0;
    }


查看完整回答
反对 回复 2019-08-28
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

该代码不起作用,如果我们修复它,它不会帮助你学习正确的C ++。如果你做了不同的事情,那就更好了。原始数组(尤其是多维数组)很难正确地传递到函数和从函数传递。我认为从一个代表数组但可以安全复制的对象开始,你会好得多。查找文档std::vector

在您的代码中,您可以使用vector<vector<int> >或者您可以使用36个元素模拟二维数组vector<int>


查看完整回答
反对 回复 2019-08-28
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

使用指针的更好的替代方法是使用指针std::vector。这会处理内存分配和释放的细节。

std::vector<std::vector<int>> create2DArray(unsigned height, unsigned width){
   return std::vector<std::vector<int>>(height, std::vector<int>(width, 0));}


查看完整回答
反对 回复 2019-08-28
  • 3 回答
  • 0 关注
  • 721 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信