Я пишу шахматный движок и, чтобы получить псевдослучайные ходы, я передаю функцию генерации ходов массив для заполнения.Вот некоторый код:
...
else if(pstrcmp(input, (char*)"check", 5)){
int checkIndex = getIndex(input[6], input[7] - 49);
printf("checkindex %i\n", checkIndex);
if(!(checkIndex < 0 || checkIndex > 127)){
//we've received a valid check
struct m mUn[MOVE_BUFF];
gen_psm(checkIndex, mUn);
int i = 0;
while(mUn[i].start != mUn[i].end && i < MOVE_BUFF){
printf("%s\n", GSQ(mUn[i].end));
i++;
}
}
}
...
Первая строка - это просто проверка ввода.Основная часть кода находится между struct m mUn[MOVE_BUFF]
и циклом while.Поэтому я создаю массив struct m
, который я создал, и он содержит несколько целочисленных значений, определяющих конкретный ход, а затем я передаю его в gen_psm
, который принимает индекс квадрата для проверки и массив для заполнения.Он заполняет массив действительными ходами для фигуры, расположенной в индексе.Прекрасно и модно для первого хода.Затем я пытаюсь сделать второй шаг и обнаруживаю, что в массиве все еще содержатся данные с первого шага, хотя я уже давно вышел из области действия mUn, в котором я его объявил.Это какой-то характер структур, что он сохраняет свои данные?Нужно ли мне заполнять 0 целиком (когда я пробовал его, мне показалось, что он заполнен нулями).Если мне нужно заполнить 0, есть ли более быстрый способ (если мне нужно заполнить 0 несколько раз 100 миллионов раз, это проблема)?