r4c*_*oon 10 c++ arrays multidimensional-array
我在函数内部创建了二维数组,我想返回该数组,并将其传递给其他函数.
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;
}
Run Code Online (Sandbox Code Playgroud)
但这一直给我错误
180*_*ION 11
是的,看看你在做什么,返回一个指向一个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;
}
Run Code Online (Sandbox Code Playgroud)
小智 11
最好的方法是创建一个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
};
Run Code Online (Sandbox Code Playgroud)
有关如何使用这样一个课程的信息,没有什么可以替代阅读一本好书.我强烈推荐Andrew Koenig和Barbra Moo的Accelerated C++.
| 归档时间: |
|
| 查看次数: |
39761 次 |
| 最近记录: |