218,220,221,223
回答どうもです
回答とCFAQを読んで
配列名は先頭要素のポインタへと成り下がるから
strcpy(配列名,配列名)
が動くことはわかりました。

しかし221さんの仰せられることは理解できますが
char *str1="こんにちわ";
char *str2="8等身です";
strcpy(str1,str2);
としたとき、
str1,str2ははそれぞれ"こんにちは","8等身です"
の先頭を指すポインタとなるから、やはり
strcpy(str1,str2);
は動かないとおかしいと思うのです。

配列名のstr1も後者の文字列リテラルへのポインタとして宣言したstr1
もどちらもポインタで、strcpy()にとられる引数として
文句ないように見えるのですが…