C++ c++&引用;运行时检查失败#2-围绕变量';配对';腐败了。”;

C++ c++&引用;运行时检查失败#2-围绕变量';配对';腐败了。”;,c++,arrays,visual-studio-2010,C++,Arrays,Visual Studio 2010,嗨,我对编程很陌生,我开始胡闹二维数组。我得到一个运行时错误“运行时检查失败#2-变量'pair'周围的堆栈已损坏”。如果有人能帮我,那太好了,谢谢 #include<stdio.h> #include<iostream> int main(void) { int pair[2][2]; pair[0][0] = 1; pair[0][1] = 1; pair[0][2] = 1; pair[1][0] = 0; pair[1][1] = 0; pair[1][2] =

嗨,我对编程很陌生,我开始胡闹二维数组。我得到一个运行时错误“运行时检查失败#2-变量'pair'周围的堆栈已损坏”。如果有人能帮我,那太好了,谢谢

#include<stdio.h>
#include<iostream>

int main(void)
{
int pair[2][2];
pair[0][0] = 1;
pair[0][1] = 1;
pair[0][2] = 1;
pair[1][0] = 0;
pair[1][1] = 0;
pair[1][2] = 0;
pair[2][0] = 0;
pair[2][1] = 0;
pair[2][2] = 0;

if((pair[0][0] == 1 && pair[0][1] == 1 && pair[0][2] == 1) || (pair[0][0] == 2 && pair[0][1] == 2 && pair[0][2] == 2))

{
    printf("Match!\n");
    system("PAUSE");
}
else
{
    if((pair[1][0] == 1 && pair[1][1] == 1 && pair[1][2] == 1) || (pair[1][0] == 2 && pair[1][1] == 2 && pair[1][2] == 2))
    {
        printf("Match!\n");
        system("PAUSE");
    }

    else
    {
        if((pair[2][0] == 1 && pair[2][1] == 1 && pair[2][2] == 1) || (pair[2][0] == 2 && pair[2][1] == 2 && pair[2][2] == 2))
        {
            printf("Match!\n");
            system("PAUSE");
        }
        else
        {
            printf("Nope!\n");
            system("PAUSE");
        }
    }
}
#包括
#包括
内部主(空)
{
int对[2][2];
对[0][0]=1;
对[0][1]=1;
对[0][2]=1;
对[1][0]=0;
对[1][1]=0;
对[1][2]=0;
对[2][0]=0;
对[2][1]=0;
对[2][2]=0;
if((对[0][0]==1和对[0][1]==1和对[0][2]==1)| |(对[0][0]==2和对[0][1]==2和对[0][2]==2))
{
printf(“匹配!\n”);
系统(“暂停”);
}
其他的
{
if((对[1][0]==1和对[1][1]==1和对[1][2]==1)| |(对[1][0]==2和对[1][1]==2和对[1][2]==2))
{
printf(“匹配!\n”);
系统(“暂停”);
}
其他的
{
if((对[2][0]==1和对[2][1]==1和对[2][2]==1)| |(对[2][0]==2和对[2][1]==2和对[2][2]==2))
{
printf(“匹配!\n”);
系统(“暂停”);
}
其他的
{
printf(“否!\n”);
系统(“暂停”);
}
}
}
}
`您的阵列只有2乘2

int pair[2][2]
因此,唯一合法的索引是[0]和[1]。你想要:

int pair[3][3]

这将允许[0][1]和[2]

您已经定义了2行2列的2d数组,并且正在尝试访问第三个数组。请从代码中删除以下所有引用(包括在if条件中)。。。希望这会有帮助

pair[1][2] = 0;
pair[2][0] = 0;
pair[2][1] = 0;
pair[2][2] = 0;

您声明了以下二维数组:

   int pair[2][2];
在我看来,你不能:

pair[2][1] = 0;
pair[2][2] = 0;
除非声明更大的数组:
int pair[3][3]