При вызове slotUpdate вы передаете «Данные», а не «& Данные». Вы не дали нам объявление slotUpdate, но оно может быть объявлено одним из двух способов:
void slotUpdate(stuData& Data);
void slotUpdate(stuData Data);
Если функция определена первым способом, то я не понимаю. Второй способ, однако, - это передача по значению semantic: - slotUpdate будет записывать в локальную копию структуры Data, эта переданная в struct не будет обновлена и, следовательно, будет содержать тот же мусор, с которого она началась когда slotUpdate возвращается. Который вы потом передадите другим функциям.
Измените ваше определение slotUpdate на одно из следующих: -
void slotUpdate(stuData* pData);
void slotUpdate(stuData& Data);
Я предпочитаю первую форму, потому что она явно указывает, что вы передаете указатель на структуру, которую вы хотите изменить. 2-я форма затрудняет понимание - как видно из вашего поста - используется ли семантика передачи по значению или передачи по ссылке.