当前位置:  开发笔记 > 编程语言 > 正文

如何返回二维char数组c ++?

如何解决《如何返回二维char数组c++?》经验,为你挑选了2个好方法。

我在函数内部创建了二维数组,我想返回该数组,并将其传递给其他函数.

char *createBoard( ){  
  char board[16][10];
  int j =0;int i = 0;
  for(i=0; i<16;i++){
        for( j=0;j<10;j++){   
                board[i][j]=(char)201;
        }   
  }
  return board;
}

但这一直给我错误



1> 1800 INFORMA..:

是的,看看你在做什么,返回一个指向一个board在堆栈上创建的对象(被调用的数组)的指针.当数组超出范围时会被销毁,因此指针不再指向任何有效对象(悬空指针).

您需要确保使用在堆上分配数组new.在现代C++中创建动态分配的数组的神圣方法是使用类似std::vector类的东西,尽管这在你尝试创建2D数组时更复杂.

char **createBoard()
{
    char **board=new char*[16];
    for (int i=0; i<16; i++)
    {
       board[i] = new char[10];
       for (int j=0; j<10; j++)
         board[i][j]=(char)201;
    }

    return board;
}

void freeBoard(char **board)
{
    for (int i=0; i<16; i++)
      delete [] board[i];
    delete [] board;
}



2> 小智..:

最好的方法是创建一个board类并使ctreateBoard函数成为它的构造函数:

class Board {
  private:
   char mSquares[16][10];

   public:
    Board() {
        for(int i=0; i<16;i++){
        for( int j=0;j<10;j++){   
                mSquares[i][j]=201;
        }       
    }

   // suitable member functions here
 };

有关如何使用这样一个课程的信息,没有什么可以替代阅读一本好书.我强烈推荐Andrew Koenig和Barbra Moo的Accelerated C++.


一个简单但不好的方式.
推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有