c++ - 字符在多维数组中重复

标签 c++

我创建了一个空的 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/

相关文章:

c++ - 如何使用 Poco::Data 获取多个结果集?

c++ - 使用 C++ 预处理器自动生成重复代码

c++ - 访问结构的 union 成员的优雅方式

c++ - 寻找相机之间的外部因素

c++ - 如何遍历 fd_set

C++ 指向函数的指针,该函数将模板化类的实例作为参数

c++ - 整数 float 除以自身是否保证为 1.f?

c++ - Qt::Tool 父级恢复时显示速度太快

c++ - 为什么 Mat.forEach 不会改变自己?

c++ - 嵌套的 boost::shared_ptr use_count 不更新