>>669
> 配列とポインタの交換性が理解できればそんなに難しく無い。
互換性? 配列変数を右辺値として評価するとポインタに縮退するという
特例があるだけで、あとは全然別物だと思うが。

int n, *p, a[10];

こう定義されていたときに n = *p, n = a[0]; を仮想的なアセンブラコードで
書き出すと、次のような感じでしょ? (C 言語なんで実装の詳細は規格で
は規定されていないけど、一般的な実装の話ね)

n = *p;
// mov r1, addr(p)   ; 変数 p のアドレスを読み出す
// lod r2, [r1]     ; 変数 p の値を読み出す
// lod r3, [r2]     ; 変数 p が指している先に書いてある値を読み出す
// mov r4, addr(n)
// store [r5], r3

n = a[0];
// mov r1, addr(a)  ; 変数 a のアドレスを読み出す
// add r1, 0      ; 変数 a[0] のアドレスに変換する
// lod r2, [r1]    ; 変数 a[0] の値を読み出す
// mov r3, addr(n)
// sto [r3], r2

間接参照の回数が 1 回違う。