Auch schon displayfire(partikel,20), ohne &, versucht? Denn ein Array ist eigentlich nichts als ein Pointer. Und sollte daher cast-los übertragbar sein.

BTW: sprite_struc partikel[21]; << Warum 21 wenn du nur 20 willst? Beim Index fängt er zwar bei 0 an (partikel[0]-partikel[19] = 20) aber beim definieren zählt er ganz "normal", also von 1. D.h. sprite_struc partikel[20]; ergäbe partikel[0]-partikel[19]. Deins ergäbe partikel[0]-partikel[20] = 21.