C ++数组错误:访问冲突读取位置0xC0000005

时间:2015-04-14 17:14:43

标签: c++ arrays visual-studio-2013

出于某种原因,当我尝试打印出一个字符串数组时,它总是有一个错误:

  

Project1.exe中0x0F767EA6(msvcp120d.dll)的未处理异常:0xC0000005:访问冲突读取位置0x73F6B6FF。

以下是生成错误的代码:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    const int numItems = 6;
    string itemNames[numItems] = { "Boots", "Swords", "Helmets", "Kittens", "Poleaxes", "Leggings" };

    cout << "*** Welcome to the item shop! ***\n";

    for (int i = 0; i < numItems; i++)
    {
        cout << itemNames[numItems] << endl;
    }

    cout << "**********\n\n";
    cout << "What would you like to buy?\n";

    system("PAUSE");
    return 0;
}

顺便说一句,我正在使用Visual Studio 2013。

2 个答案:

答案 0 :(得分:1)

for (int i = 0; i < numItems; i++)
{
    cout << itemNames[numItems] << endl;
}

您可能需要cout << itemNames[i] << endl;。否则itemNames[numItems]总是越界。

答案 1 :(得分:0)

numItems的值为6。您正在尝试使用itemNames[6]在行

中访问itemNames[numItems]
  

cout&lt;&lt; itemNames [numItems]&lt;&lt; ENDL;

不存在。因此,您会收到访问冲突错误。