在c ++中使用动态多维数组

ska*_*zhy 5 c++ multidimensional-array

我正在制作一个C++程序,检查给定的aray是否为拉丁方.我需要使用一个存储给定拉丁方的动态多维数组.但我不能将数组传递给执行检查的函数...

目前我有这样的代码来调用函数:

int squaretest(int **p, int n, int sum) {

    //some code
};
Run Code Online (Sandbox Code Playgroud)

这段代码用于创建数组:

int main() { 

    //some code. n - length of one row, sum - sum of elements in one row.
    int a;  
    int **lsquare;
    lsquare = new int*[n];
    for (int i=0;i<=n-1;i++) for (int j=0;j<=n-1;j++) {
        cin >>a;
        lsquare[i][j] = a;
    }
    blocktest(lsquare,n,sum);
    //some code
};
Run Code Online (Sandbox Code Playgroud)

代码编译(我正在使用Geany IDE和G ++编译器)但是当我在终端中运行它时,在第一次输入后,必须存储在块[0] [0]中,我得到了分段错误.我的代码有什么问题,什么是正确的溶剂?

Bil*_*nch 7

能够这样做..你实际上需要这样做:

int **lsquare = new int*[n];

for (int i=0; i<n; ++i)
    lquare[i] = new int[n];

for (int i=0; i<n; i++)
    for (int j=0; j<n; j++)
        cin >> lsquare[i][j];

blocktest(lsquare,n,sum);
Run Code Online (Sandbox Code Playgroud)

更好的系统是:

int *lsquare = new int[n*n];

for (int i=0; i<n; ++i)
    for (int j=0; j<n; ++j)
        cin >> lsquare[i + j*n];

blocktest(lsquare, n, sum);
Run Code Online (Sandbox Code Playgroud)