分配多维阵列VSC++
allocating a multi-dimensional array VSC++
我正在VS2010控制台应用程序中使用2D阵列。我这样分配阵列:
Thing::Thing(int _n, bool _control){
m = _n;
control = _control;
thisArray = new int*[m];
for(int ii = 0; ii < m; ii++){
thisArray[ii] = new int[m];
for (int jj = 0; jj < m; jj++){
thisArray[ii][jj] = 0;
}
}
if (control == true){
int num = 1;
for (int jj = 0; jj < m; jj++){
for ( int ii = 0; ii<m; ii++){
if ((jj == (m-1)) && (ii == (m-1))){
std::cout << "inserting " << 0 <<
"at[" << ii << "][" << jj << "]" << std::endl;
thisArray[ii][jj] = 0;
std::cout << thisArray[ii][jj] << std::endl;
} else{
std::cout << "inserting " << num <<
"at[" << ii << "][" << jj << "]" << std::endl;
thisArray[ii][jj] = num++;
std::cout << thisArray[ii][jj] << std::endl;
}
}
}
pi.x = m-1;
pi.y = m-1;
}
}
然后我尝试通过显示
void Thing::display(){
int x = 0;
int y = 0;
for( ; y < m; y++){
for( x = 0; x < m; x++){
if (Point(x, y) == pi){
std::cout << "[ ]";
}
std::cout << "[" << thisArray[x][y] << "]";
if ( x == m ){
std::cout << std::endl;
}
}
}
}
但当我输入4时,它似乎只显示第一个维度作为输出,true看起来是这样的:
inserting 1 at[0][0]1
inserting 2 at[1][0]2
inserting 3 at[2][0]3
inserting 4 at[3][0]4
inserting 5 at[0][1]5
inserting 6 at[1][1]6
inserting 7 at[2][1]7
inserting 8 at[3][1]8
inserting 9 at[0][2]9
inserting 10 at[1][2]10
inserting 11 at[2][2]11
inserting 12 at[3][2]12
inserting 13 at[0][3]13
inserting 14 at[1][3]14
inserting 15 at[2][3]15
inserting 0 at[3][3] 0
[1][2][3][4]
,当我将数组添加到监视列表中时,系统会显示指向单个值的指针,然后只显示第一个元素,而不是所有元素。
它不会抛出运行时访问错误或类似的错误,但当我尝试显示数组时,它只会执行第一行。注意:我被要求使用实际的int二维数组,不允许使用预先编写的库或一维谎言。
edit:添加了额外的输出信息。edit2(已解析):在显示中将循环的第二个更改为
for (x = 0; x < m; x++)
当保持for循环外部的值时,确保它们被重置以进行循环迭代。
在显示函数中,必须在外部y
循环的每次迭代中重置x
。如果您在for
语句中进行初始化,则会更清楚:
for(int y = 0; ; y < m; y++){
for(int x = 0; ; x < m; x++){
要在Visual C++调试器中将指针视为数组,您可以考虑其他问题。
相关文章:
- OpenMP阵列性能较差
- 如何将三维尺寸不固定的三维阵列展平为一维阵列
- 当我的阵列太大时出现分段错误
- 位阵列上的快速AND运算
- 阵列必须使用大括号封闭的初始器进行初始化
- 没有从阵列<float>到阵列<int>的可行转换
- C++动态安全 2D 交错阵列
- 将平面阵列重塑为复杂的特征类型
- 如何使用英特尔 PIN 捕获阵列的所有负载?
- 为什么我能够为阵列分配比计算机实际拥有的内存更多的内存
- 库特<<恩德尔;不适用于打印 2D 阵列
- 数组类 阵列的打印输出
- 从较小的阵列到较大的阵列的元素级转换
- 仅在大型阵列上出现合并排序分段错误
- 从阵列C++中删除重复项
- 阵列的大小在C++中是否灵活?
- 反转阵列中的正序列
- 具有可变尺寸的 C++ 2D 阵列
- 二维阵列的动态分配
- 分配多维阵列VSC++