簡體   English   中英

c ++“運行時檢查失敗#2 - 變量'對'周圍的堆棧已損壞。”

[英]c++ “Run-Time Check Failure #2 - Stack around the variable 'pair' was corrupted.”

嗨,我對編程很新,我開始搞亂二維數組。 我得到了這個運行時錯誤“運行時檢查失敗#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。

int pair[2][2]

所以唯一合法的索引是[0]和[1]。 你要:

int pair[3][3]

這將允許[0] [1]和[2]

你宣布了​​下面的二維數組:

   int pair[2][2];

從我的角度來看,你做不到:

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

除非你聲明一個更大的數組: int pair[3][3];

你已經定義了2行和2列的2d數組,你試圖訪問第三個..刪除你的代碼中的所有下面的引用(包括if條件)...希望這將有所幫助..

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM