-2

我正在尝试输入

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

1 回答 1

4

您正在覆盖数组的边界,导致Undefined Behavior
当您有一个具有未定义行为的程序时,它可以向您显示任何输出。

您的数组声明是:

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

当你的循环运行时:

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

数组下标从0所以刚写到不属于你的数组的内存开始。

于 2012-12-30T11:48:09.487 回答