Этот код действительно проверяет границы массива?Проверка за пределами C
Пределы в данном случае равно 0 - 20 в 2d-массив
int noOfNeighbors(game *g, int row, int column){
int aliveCounter = 0;
for(int rows=-1; rows<=1; rows++) {
for(int cols=-1; cols<=1; cols++) {
if((rows || cols)) {
if(row+rows < (*g).rows && row+rows >= 0){
if(column+cols < (*g).columns && column+cols >= 0){
if(isAlive(g,row+rows,column+cols)){
aliveCounter++;
}
}
}
}
} //end cols
}//end rows
return aliveCounter;
}//end noOfNeighbors
Где
typedef struct {
char current;
char next;
} cell;
typedef struct {
cell field[MAX_ROWS][MAX_COLUMNS];
int rows;
int columns;
char aliveChar;
char deadChar;
} game;
и строки и столбцы установлены на 20
обновленный код и теперь его чеки 0-19
Нам нужна декларация типа 'игры' –
Похож на' (* g) .rows' и '(* g) .columns' (кто-то боится оператора' -> '?) Будут вашими верхними пределами (20). –
По-прежнему нет доступа к массиву в этом коде ... – gongzhitaao