C++ C++;动态ND阵列

C++ C++;动态ND阵列,c++,arrays,C++,Arrays,我在动态创建ND数组时遇到问题。 例如: int **A = 0; A = new int *[rowsA]; for (int i=0;i<rowsA;i++) { A[i] = new int[columnsA]; for(int j=0;j<columnsA;j++) { cout << "Enter " << "(" << i << "," << j << "):

我在动态创建ND数组时遇到问题。 例如:

int **A = 0;
A = new int *[rowsA];

for (int i=0;i<rowsA;i++) {
    A[i] = new int[columnsA];
    for(int j=0;j<columnsA;j++) {
            cout << "Enter " << "(" << i << "," << j << "): ";
            cin >> A[i][j];
    }
}
int**A=0;
A=新整数*[rowsA];

对于(int i=0;i您的A变量是一个指针数组(每个指针指向一个
int
序列)-
print\u matrix
需要一个指针直接指向一个
int
序列。这两种类型不兼容


您需要使print_矩阵采用
int**
,或者将A变量的用法更改为
A[i+j*x]
,而不是
A[i][j]
您的A变量是一个指针数组(每个指针指向
int
的序列)-
print_matrix
需要一个指针直接指向
int
序列。这两种类型不兼容


您需要使print_矩阵采用
int**
,或者将A变量的用法更改为
A[i+j*x]
,而不是
A[i][j]

如果ND数组指的是an,则表示您没有正确构建它。数据必须连续分配,因此在一次分配中,因为连续调用new返回的内存不一定是连续的。这应该可以完成以下工作:

int **A = new int *[rowsA];
int *data = new int[rowsA*columnsA];

for (int i=0;i<rowsA;i++) {
    A[i] = data + i*columnsA;
    for(int j=0;j<columnsA;j++) {
            cout << "Enter " << "(" << i << "," << j << "): ";
            cin >> A[i][j];
    }
}
int**A=newint*[rowsA];
int*data=newint[rowsA*columnsA];

对于(int i=0;i,如果ND数组指的是an,则无法正确构建它。数据必须连续分配,因此在一次分配中,因为连续调用new返回的内存不一定是连续的。这应该可以完成以下工作:

int **A = new int *[rowsA];
int *data = new int[rowsA*columnsA];

for (int i=0;i<rowsA;i++) {
    A[i] = data + i*columnsA;
    for(int j=0;j<columnsA;j++) {
            cout << "Enter " << "(" << i << "," << j << "): ";
            cin >> A[i][j];
    }
}
int**A=newint*[rowsA];
int*data=newint[rowsA*columnsA];

对于(int i=0;iSide注意:你不应该
cout侧边注意:你不应该
cout吗?最不幸的是,一些老师区分了“真正的多维数组”和“数组数组数组”,他们说后者是指针数组。这使人们认为“真正的多维数组”不是“数组数组数组”在我的艾达背景下,我倾向于认为C和C++中没有多维数组。最不幸的是,有些老师把“实多数组”和“数组数组”区别开来,在这里他们说指针数组是一个指针数组。“实际多阵列”不是一个“数组数组”,而事实上它们是完全正确的。@利特,以我的艾达背景,我倾向于认为C和C++中没有多维数组。