我创建了一个空的 char
多维数组,但当我尝试更改特定值时,它有时会复制到数组中的另一个空间。
例子:
#include <iostream>
using namespace std;
char arr[2][2] = { 0 };
int main ()
{
arr[2][0] = 'A';
for(int i = 0; i < 3; ++i)
{
for(int j = 0; j < 3; ++j)
{
cout << "arr[" << i << "][" << j << "] = " << arr[i][j] << endl;
}
}
}
输出:
arr[0][0] =
arr[0][1] =
arr[0][2] =
arr[1][0] =
arr[1][1] =
arr[1][2] = A
arr[2][0] = A
arr[2][1] =
arr[2][2] =
字符 A
应该只出现在 [2][0]
中,但它也出现在 [1][2]
中。
这仅发生在这些空间中:
[1][0], [2][0], [0][2], [2][2]
我能够用更大的数组重新创建它,但我不能说出具体值。
我尝试在 main()
函数内部定义,但它产生了另一个问题,随机字符开始出现在数组的随机位置。
我尝试用 char arr[2][2] = { 0 }
初始化数组,但没有帮助。
最佳答案
当您声明 char arr[2][2] = { 0 };
时,这是一个 2x2 数组。这意味着它的索引从 0 到 1。您正在写入索引 2,它在数组边界之外。
关于c++ - 字符在多维数组中重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52894501/