>>280-281
ならない。
配列に&演算子を作用させたときに得られるポインタは配列へのポインタであって、
配列の先頭要素へのポインタではない。

memset() などでは、配列の先頭要素へのポインタを与えても、配列へのポインタを与えても、正当に動く。
なぜなら memset() の引数が void * と定義されているために、コンパイラが暗黙に適切な型変換を行うからである。

一方、可変個数の引数を取る printf() や scanf() では、そのような暗黙の変換は行われない。
scanf() で %s を指定した場合に与えるポインタは char へのポインタでなければならない。
ポインタのサイズや内部表現が同じ処理系においては、配列へのポインタを与えても
(渡される値が、型は異なっても実際には同じバイナリ列であるために)たまたま動く。
しかしそれは規格が保証した動作ではない。