C++ C++;动态ND阵列
我在动态创建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 << "):
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++中没有多维数组。