>>100
補足
# "*(float *)(&integ)"は…
これはintである(intとして格納されている)ことを無視して、強引にfloatとして格納しているとしているわけで
floatとして格納できるメモリ域さえあれば別にchar[4]だろうが、より大きいメモリ域を取るdouble等なんでもいいわけです
(malloc()で取ったvoid *状態からキャストしても可)

逆に元々のintであることとかを無視してしまっているので、今回の例のように明確に理由がある場合以外では滅多に使うものではないです(というより、使ってはいけません)

この悪い例としては
ポインタを使っているコードで、キャストの部分でエラー(警告)が出るからということで、闇雲にキャストしてエラーを消すということ
エラーは消えたけど、真の意味を無視しているので動くわけないです
意外とプログラマとして仕事している人の中にもポインタを理解している人が少ないチームではやってしまっているのを多く見掛けるようです
ポインタを理解した後でもいいので、気に留めておくといいと思います