C++它会更改变量的值,因为.
C++ it changes the value of the variable because of..?
这就是代码:
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...99
、0...99
、0...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=100
和p=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]
。所以两者确实在同一地点。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 将数组的地址分配给变量并删除
- 为"adjacent"变量赋值时出现问题
- enum是C++中的宏变量还是整数变量
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 用C++中的一个变量定义一个常量
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 你能重载对象变量名本身返回的内容吗
- 内置函数可查看CPP中的成员变量
- 是否可以初始化不可复制类型的成员变量(或基类)
- 尝试通过多个向量访问变量时,向量下标超出范围
- 试图让变量检查数组中的某些内容
- Cpp-Tuple使用带有变量的get
- 我可以在这里替换什么,因为我不能在 C# 中使用隐式变量的 lambda 函数?
- void 值没有被忽略,因为它应该是(试图将 void 分配给非 void 变量?
- 对于循环执行失败,因为变量我不会递增,为什么?
- 为什么它不是一个不确定的循环,因为循环计数器在整数变量的范围之外
- 为什么我在代码块中遇到编译错误,因为我使用的变量超出了范围?
- C++它会更改变量的值,因为.