我正在制作一个简单的游戏,需要我创建一个由用户定义大小的棋盘。
我一直在编写一个函数,该函数应该返回我将在我的游戏中使用的棋盘(矩阵),但我似乎无法让它工作。
我尝试使用嵌套的 for 循环方法在 main 函数中打印出矩阵,但是我在实现它并从函数返回它时遇到了麻烦。
int* boardStateDead(int width, int height){
int* board_dead_state[width][height];
for(int i = 0; i < height; i++){
for(int j = 0; j < width; j++){
board_dead_state[i][j] = 0;
}
}
return board_dead_state;
}
我希望该函数能够返回指向我刚刚创建的矩阵的指针。
最佳答案
您正在堆栈中创建板阵列,并在超出范围后被删除。此外,您将其创建为整数指针数组而不是整数数组。
我建议您使用新语句创建它:
int* board_dead_state = new[width*height];
然后设置你的初始值或者使用:
memset(board_dead_state, 0, width*height*sizeof(int));
或将您的 for 循环修改为:
for(int i = 0; i < height; i++){
for(int j = 0; j < width; j++){
int offset = i * width + j
board_dead_state[offset]= 0;
}
}
从函数返回指针后,您负责使用 delete[] 语句释放它。
您可以创建一个板类来在需要时处理分配和释放。
关于c++ - 如何从 C++ 中的函数返回矩阵(板)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58618421/