0x7A47E727 中未处理的异常

Unhandled exception in 0x7A47E727

#include "pch.h"
#include <iostream>
#include <string>

using namespace std;

int main()
{

    //system("cls");
    const int x = 30;
    const int y = 15;
    string tabella[y][x];
    char bordo = '#';
    for (int i = 0; i < x; i++)
        tabella[0][i] = bordo;
    for (int i = 0; i < y; i++)
        tabella[i][0] = bordo;
    for (int i = 0; i < x; i++)
    {
        for (int j = 0; j < y; j++)
        {
            std::cout << tabella[i][j];
        }
        std::cout << "\n";
    }

}

我不明白为什么会出现这个问题:

Eccezione non gestita in 0x7A47E727 (ucrtbased.dll) in Prova1.exe: 0xC0000005: violazione di accesso durante la lettura del percorso 0xCCCCCCCC.

此处为英文翻译:

Unhandled exception in 0x7A47E727 (ucrtbased.dll) in Test1.exe: 0xC0000005: access violation while reading path 0xCCCCCCCC.

问题似乎出在这一行: std::cout << tabella[i][j];

我不知道,但它是在我使用 x e y 变量时开始的。 我正在使用 Visual Studio 2017 顺便说一句。

看看你的数组边界。您的 ij 方向错了。

std::cout << tabella[i][j];

应该是

std::cout << tabella[j][i];

或者您的 xy 一开始就搞错了。

你声明数组

const int x = 30;
const int y = 15;
string tabella[y][x];

但是你在这里使用了错误的索引:

std::cout << tabella[i][j];

因为 i 从 0 数到 29 而 j 从 0 数到 14。

所以你必须使用:

std::cout << tabella[j][i];

这将解决您的问题