问题
我有一个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
答案 0 :(得分:3)
您不能使用格式化输出<<
打印数组。您需要像更改值一样循环进行操作。
现在发生的事情是numberArray
衰减指向它的第一个元素的指针,然后打印该指针。与打印&numberArray[0]
相同。