2014-02-20 124 views
0
#include "stdafx.h" 
#include <iostream> 
using namespace std; 
#define NUMBER_OF_PLAYERS 3 


int _tmain(int argc, _TCHAR* argv[]) 
{ 
    int my2DArray[3][3]; 
    my2DArray[1][1] = 1; 
    my2DArray[1][2] = 2; 
    my2DArray[1][3] = 3; 

    my2DArray[2][1] = 4; 
    my2DArray[2][2] = 5; 
    my2DArray[2][3] = 6; 

    my2DArray[3][1] = 7; 
    my2DArray[3][2] = 8; 
    my2DArray[3][3] = 9; 

    for (int y = 0; y < 3; y++) 
    { 
     for(int x = 0; x < 3; x++) 
     { 
      cout << my2DArray[x][y]; 
     } 
     cout << endl; 
    } 
    return 0; 
} 

當我運行此C++代碼的變量,會出現一條消息:運行時檢查失敗#2 - 堆棧圍繞變量「my2DArray」是損壞。我檢查了其他線程,但沒有找到答案。我做錯了什麼?運行時檢查失敗#2 - 堆棧圍繞「my2DArray」被損壞

+0

閱讀本文:[「如何在C++中使用數組」](http://stackoverflow.com/questions/4810664/how-do-i-use-arrays-in-c)。 – WhozCraig

回答

0

C++中的數組是基於0的。因此,快速修復:

my2DArray[0][0] = 1; 
my2DArray[0][1] = 2; 
my2DArray[0][2] = 3; 

my2DArray[1][0] = 4; 
my2DArray[1][1] = 5; 
my2DArray[1][2] = 6; 

my2DArray[2][0] = 7; 
my2DArray[2][1] = 8; 
my2DArray[2][2] = 9; 
0

C/C++對數組使用基於0的索引。因此,如果您製作像int array[3]這樣的陣列,則可以通過array[0]訪問第一個元素。最後一個元素是array[2]。如果您寫入array[3]因爲它不是數組的一部分並且正在寫入數據,則會導致堆棧損壞。

相關問題