For循环使数组打印出随机字母和数字

时间:2018-07-11 18:19:31

标签: c++ arrays for-loop

问题

我有一个for循环,该循环遍历一个数组,并向每个元素添加一个,但是在我打印(使用std::cout)该数组之后,出现了随机字母和数字,并且输出似乎有所不同,具体取决于我正在使用什么编译器。那么如何更改for循环,以便将其添加到每个元素?

代码

#include <iostream>
using namespace std;

int main() {
    int numberArray [3] = { 0, 1, 2 };

    for (int arrayIndex = 0; arrayIndex < 3; ++arrayIndex) 
    {
    numberArray [arrayIndex] += 1;
    }

    cout << "The array is now " << numberArray << endl;
}

结果

我期望的结果与此类似:

The array is now 123

但是相反,我得到了这样的结果(使用repl.it):

The array is now 0x7ffe17eb7c70

在Visual Studio 2017上,我得到这样的结果:

The array is now 00FEF994

在Visual Studio上,弹出消息说:

Run-Time Check Failure #2 - Stack around the variable 'numberArray' was corrupted

1 个答案:

答案 0 :(得分:3)

您不能使用格式化输出<<打印数组。您需要像更改值一样循环进行操作。

现在发生的事情是numberArray 衰减指向它的第一个元素的指针,然后打印该指针。与打印&numberArray[0]相同。