変数のアドレスは変わらない発言の件
私は正しいと思っている者ですが何を絡まれているのかがちょっとよく分からない。話題の次元が合ってない?

グローバル変数なら特定の絶対アドレスを対象に値を格納・取得する
ローカル変数なら呼ばれた関数用に確保されたスタックフレーム上の特定のオフセットアドレスを対象に値を格納・取得する(アドレスを必要としないレジスタ変数については今回議論の中心ではない様なので除外してます)
int変数ならintの値を、int*変数ならポインタ値を、特定のアドレスを対象に格納・取得。
Cのコードを翻訳した時に、これらの動作となる機械コードが出力されると思ってます。

一方、アドレスが途中で変わると言う主張は私には例がイメージができないです、、、