scanf を自分で実装することを考えてみるべし。
1) "%c" というヒントをもらった。
2) ポインターで書き込み対象の変数の先頭アドレスだけは分かる。
3) "%c" の指示に従い、2)のポインターから char サイズ分しか値を書き込まない。

こういう動作をする関数に対して無理矢理 int のポインターを渡した。
上記 3) で書き換えた部分はいったい何処に相当するのか? その結果どうなるのか?

○ char ⇔ int の実装上の大きさ、メモリ配置は環境によりばらばら。