2014-02-28 116 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];

相關問題