[798] Re:左辺値としての配列名
投稿者:774RR
2007/02/20 02:13:25
char a[10];
char (*p)[10]=&a; // である場合に
*p=0; あるいは *p={0}; であれなんであれ *p は代入式の左辺に置けません。
JIS X 3010:2003 6.5.16 代入演算子 [制約] 変更可能な左辺値でなければならない。
JIS X 3010:2003 6.3.2.1 変更可能な左辺値とは...[配列を含まない]
なので
>配列に代入できないのは変更可能な左辺値ではないから
であり、それ以上でも以下でもないです。
ただしこの話はスレ題の「左辺値が要求される場所においても読み替えが起こるか」とは無関係。
無関係ではありますが、やはり同じく JIS X 3010:2003 6.3.2.1
型"~の配列"を持つ式は、型"~へのポインタ"の式に型変換する。
それは配列オブジェクトの先頭の要素を指し、左辺値ではない。
とありますから、スレ題に関して言えば「どちらでもいい」となります。
起こると解釈しても起こらないと解釈しても、いずれにせよ代入式の左辺に置けないことに違いは無い。
ところで JIS X 3010 は 2003 版が発行済で 2003 版には 6.2.2.1 が無かったです。
引用元は 1990 版でしょうか?