ポインタについて質問させてください。

int hoge;
int *foo;
があったとき、hogeからfooにアドレスを渡すには普通
foo = &hoge;
としたと思います。

ですが別のサイトで見た時に
*foo = &hoge;
と書いていたので試しにビルドしてみたのですが正常に動きました。
*fooとした場合fooが示すアドレスの値を書き換えたと思うので、おかしいと思いました。

これは何故でしょうか?