C++它会更改变量的值,因为.

C++ it changes the value of the variable because of..?

本文关键字:因为 变量 改变 C++      更新时间:2023-10-16

这就是代码:

point [1][2][1] = 3;
cout << point[1][2][1] << endl;
point [1][3][0] = 4;
cout << point[1][2][1] << endl;

当我运行应用程序时,控制台就是这么说的:

3
4

如果我改为

point[1][3][0] = 5;

上面写着

3
5

如何删除这个烦人的错误?我不能再那样下去了。

当您的变量被声明为时

int point[100][100][1];

则有效索引分别为0...990...990...0

因此,您访问point[1][2][1]是非常不合适的。根据超出范围的索引,您可能会完全访问数组之外的区域,或者访问数组的不同切片中的区域。

如果你真的想任意访问数组元素,那么我建议你放弃三下标表示法,使用:

int point[m][n][p];
int* p = &point[0][0][0];
p[x*n*p + y*p + z]

现在,您可以控制行主访问与列主访问,并且任何产生小于m*n*p的偏移量的计算都是有效的。

请注意,在您的案例中,m=n=100p=1,因此point[1][3][0]p[1*100*1 + 3*1 + 0] = p[103]point[1][2][1]也是p[1*100*1 + 2*1 + 1] = p[103]。所以两者确实在同一地点。