数组的输出与输入不同

时间:2012-12-30 11:44:46

标签: c++ arrays for-loop multidimensional-array

我正在尝试输入

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;
}

1 个答案:

答案 0 :(得分:4)

您正在覆盖数组的边界,从而导致未定义的行为 如果您的程序具有未定义的行为,它可以显示任何输出。

您的数组声明是:

char mySexyArray [lineInputs-1][arrayElements-1];

当你的循环运行时:

 for (int i=0;i<lineInputs;i++)
    {
        for (int j=0;j<arrayElements;j++)

数组下标从0开始,所以只是写入了一个不属于你的数组的内存。