c++ - 如何从 C++ 中的函数返回矩阵(板)?

标签 c++ arrays matrix

我正在制作一个简单的游戏,需要我创建一个由用户定义大小的棋盘。

我一直在编写一个函数,该函数应该返回我将在我的游戏中使用的棋盘(矩阵),但我似乎无法让它工作。

我尝试使用嵌套的 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/

相关文章:

C++。似乎不接受用户的输入

javascript - 将对象子数组排序到包含对象的新数组

arrays - 如何检查数组中的所有值是否都是相同的 mongodb 聚合?

matrix - 构建分块三对角矩阵

mysql - 如何存储和查询大量的矩阵?

c++ - 使用 C++/Obj-C 创建小部件?

c++ - 为什么 "override"在 C++11 的末尾?

c++ - 我如何读取小型转储?

c# - C#中的数组如何部分实现IList<T>?

performance - 矩阵乘法中的 bsxfun 实现