【发布时间】:2019-03-24 11:19:23
【问题描述】:
我创建了一个空的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 } 初始化数组,但没有帮助。
【问题讨论】:
-
与您的问题无关,但这是一个写得很好的第一个问题。您为我们提供了一个最小可验证的完整示例,以及您的期望与实际输出。我期待在这里看到您的更多贡献!
-
initialize 的 C++ 习惯用法是多维、固定大小的数组
char arr[2][2] = { };。另一种选择是std::fill
标签: c++