0

我正在尝试使用多维数组编写一个复杂的井字游戏。这是一段应该打印的代码:

 g | g | g
----------
 g | g | g
----------
 g | g | g

其中 g 是从 g[1][1] 到 g [3][3] 的多维数组,其中 g[3][3] 是一个字符串。下面的程序应该打印上面板上的第一行

#include <iostream>
#include <string>
using namespace std;

int main() {
    string g[3][3];
    g[1][1] = " ";
    g[2][1] = " ";
    g[3][1] = " ";
    g[1][2] = " ";
    g[2][2] = " ";
    g[3][2] = " ";
    g[1][3] = " ";
    g[2][3] = " ";
    g[3][3] = " ";
    cout << " " << g[1][1] << " " << "|" << " " << g[2][1] << " " << "|" << " " << g[3][1];
    cout << "----------------";
}

在控制台上方运行此程序时,会打开一个控制台,并且在“TESTIFICATE.exe”[2812] 中出现未处理的 win32 异常。我得到一个窗口,我应该在其中选择一个调试器。选择编译器时,Visual Studio 2010 会打开,我面前会出现一些奇怪的头文件。

请注意,上面的程序是主程序的一部分,在我添加那段代码之前它工作得很好,我从中得到了未处理的 win32 异常消息。这在我之前的程序中从未发生过,而且由于程序相对简单,因此不应该发生这种情况。

额外细节:

  • 操作系统:Windows XP 专业版 SP3;
  • 我安装了 Visual Studio 2010(不是特快版)
  • 我正在使用 Codeblocks IDE;
  • 编译后,我的 IDE 中没有任何警告或错误。

如果需要任何进一步的详细信息,请在评论中发布,我会发布它们。

4

2 回答 2

3

数组索引从0所以g[3][3]是无效的内存访问开始。

于 2012-04-12T17:46:46.507 回答
1

你有一个错误。

g[1][1]应该是g[0][0]g[2][2]应该是g[1][1],等等。

于 2012-04-12T17:47:13.440 回答