char arr[]="foo"
とした時、
(arr == &arr[0]) && (arr == &arr)
が成り立ちます(VC6Pro, Cygwinで確認)。
前者の比較が真と評価されるのは当然ですが
後者のが真になる(それ以前にコンパイルが通る)理由がわかりません。
&arrは文法的にどう解釈されるのでしょう?