nameは配列全体で、ただしすぐ先頭要素へのポインタになる
&nameは配列全体へのポインタになる
&name[0]はまずname[0]が結合し次に&だから先頭要素へのポインタから0番目の要素へのポインタ=先頭要素へのポインタ

たいてーの処理系では値としてはまったく同じものでコンパイラが型チェックすることがあるだけ
でももちろんそうでない処理系もあるかもしれないということになる(C規格の上では)

%pに渡すポインタも、void*にキャストする必要があるかどうかは処理系定義じゃなかったかな