所以我開始使用SDL和C開發遊戲,在第一個小時內只有2個函數,沒有太多的行,所以控制檯崩潰了。我得到了一個包含結構SDL_Rect
(對於int x,y
表面的座標)的二維數組結構。控制檯在for循環中崩潰
我做了一個函數,通過使用兩個for
循環來初始化我的數組的所有座標。錯誤似乎在第一次循環的第二次迭代結束時發生,當代碼進入第三次循環時。我在測試循環的每個階段測試數組的值,並在每次分配之前和之後做出猜測。
這裏是我的功能:
void InitializeCoordinate(BrickStruct (*Grid)[10][12])
{
int i=0,j=0;
for(i=0;i<10;i++)
{
for(j=0;j<12;j++)
{
Grid[i][j]->Coordinate.x = j*80;
Grid[i][j]->Coordinate.y = i*40;
}
}
}
這裏是我的結構:
typedef struct BrickStruct
{
int type;
SDL_Rect Coordinate; //Struct using 2 int x,y to define coordinates of a surface
}BrickStruct;
而在我的主,我創建了Grid
結構,我通過我的Grid
我的功能。這是SDL_Surface *ecran=NULL;
和SDL_Init(SDL_INIT_VIDEO)
之間:這一切
BrickStruct Grid[10][12];
InitializeCoordinate(&Grid);
。我和我的同事在這個問題上停留了幾個小時。控制檯代碼錯誤報告是-1073741510和-1073741819(0xc0000005)。 也許一個好的靈魂會引導我們走向好的道路? :)
在此先感謝
'void InitializeCoordinate(BrickStruct Grid [10] [12])'''Grid [i] [j] .Coordinate.x = j * 80;''和InitializeCoordinate(Grid);'。數組參數總是按指針傳遞,而不是按值傳遞,所以不用擔心。 – pasztorpisti