2D массив заполняется мусором при передаче в виде указателя на функцию - PullRequest
0 голосов
/ 04 января 2011

Этот массив объявлен внутри моей функции main ():

int   VISITED[9][9]={{0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0}};

он передается функции qneighbor со строкой

qneighbor (5,5,1, 0, &pawn_positions, &PAWNS, WALLH, WALLV, &VISITED);

Подпись qneighbor выглядит следующим образом:

CELL* qneighbor( int root_row, int root_col, int p, int dist, struct GameTable* PAWN_POSITIONS, int (*PAWNS)[9][9], int WALLH[8][9], int WALLV[9][8], int (*VISITED)[9][9]){...}

Однако при отладке я вижу, что после пятой строки она заполняется мусором, сразу после передачи в qneighbor (до выполнения какой-либо команды).Что может быть не так?

Ответы [ 3 ]

1 голос
/ 04 января 2011

Кажется, в вашем коде нет особых проблем.
Кстати, как упоминалось в bcsanches, параметр int (*VISITED)[9][9] *1003* - это указатель на int[9][9].
.доступ к его элементам, VISITED сам по себе должен быть разыменован как (*VISITED)[ i ][ j ].
Если вы пишете VISITED[ i ][ j ], он представляет указатель, а не int.
Так, если вы пишете printf( "%d", VISITED[i][j] ) для подтвержденияvalue, он печатает значение указателя (адрес) в виде целого числа и выглядит как мусор.

0 голосов
/ 04 января 2011

вам не нужно использовать указатели для изменения массива, массивы передаются по ссылке, поэтому измените на:

CELL* qneighbor( int root_row, int root_col, int p, int dist, struct GameTable* PAWN_POSITIONS, int PAWNS[9][9], int WALLH[8][9], int WALLV[9][8], int VISITED[9][9]){...}

и позвоните по телефону:

qneighbor (5,5,1, 0, &pawn_positions, PAWNS, WALLH, WALLV, VISITED);

В вашем коде вы фактически создаете массив указателей ...

0 голосов
/ 04 января 2011

индекс массива вне границ
сохранить индекс <9 </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...