2014-02-28 87 views
1

嗨,我很新的编程,我开始搞乱二维数组。我得到一个这个运行时错误“运行时检查失败#2 - 堆栈变量'对'已损坏。”如果有人能帮助我,那将是非常感谢。C++“运行时检查失败#2 - 围绕变量”堆栈“的堆栈已损坏。”

#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"); 
     } 
    } 
} 

} `

回答

2

你的阵列仅仅是2除以2

int pair[2][2] 

因此,唯一的法律索引为[0]和[1]。你想:

int pair[3][3] 

这将使[0] [1] [2]

0

您已经定义二维数组2行2列,您试图访问third..remove所有以下(包括如果条件)从你的代码引用...希望这将有助于..

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

你声明的foloowing 2个dimentionnal阵列:

int pair[2][2]; 

从我的角度来看,你不能这样做:

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

,除非你宣布一个更大的阵列:int pair[3][3];

相关问题