我正在尝试输入
1
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
但由于某种原因我将此作为我的输出
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIHHH
它应该输出与H完全相同的东西,但不是它的输出更少而是随机的I.这是什么?
#include <iostream>
using namespace std;
const int arrayElements = 40;
int main()
{
int lineInputs = 0;
cin >> lineInputs;
char mySexyArray [lineInputs-1][arrayElements-1];
int whatever =0;
for (int i=0;i<lineInputs;i++)
{
// cin >> whatever;
for (int j=0;j<arrayElements;j++)
{
cin >>mySexyArray[i][j];
}
}
for (int i=0;i<lineInputs;i++)
{
for (int j=0;j<arrayElements;j++)
{
cout << mySexyArray[i][j]<<"";
}
cout << endl;
}
return 0;
}
答案 0 :(得分:4)
您正在覆盖数组的边界,从而导致未定义的行为 如果您的程序具有未定义的行为,它可以显示任何输出。
您的数组声明是:
char mySexyArray [lineInputs-1][arrayElements-1];
当你的循环运行时:
for (int i=0;i<lineInputs;i++)
{
for (int j=0;j<arrayElements;j++)
数组下标从0
开始,所以只是写入了一个不属于你的数组的内存。