1. используйте типы данных из stdint.h. Так будет правильнее.
2. в задаче
Цитата
принимаю по USARTу пять байт и считаю CRC - 8 по полиному 0х07.
я не увидел double...
3. в массиве number[], на сколько я понимаю, у вас уже лежит принятые по UART 5 байт и нет ни единого повода сначала паковать эти 5 байт в одно длинное число, чтобы потом гордо распаковывать на байты внутри функции которая считает crc.
Так что смело вызывайте Crc8 (&number[0], 5); и она подсчитает CRC8 для 5 байт из массива number.
Про указатели почитайте, гугл знает.
The truth is out there...