Why are arrays not lvalues? [duplicate]
问题 This question already has answers here : Why array type object is not modifiable? (5 answers) Closed 6 years ago . I understand that the C standard prohibits the use of arrays as (modifiable) lvalues, that is, on the left-hand side of an assignment: int lhs[4], rhs[4] = {0, 1, 2, 3}; lhs = rhs; /* illegal! */ Now, I have been wondering why this is the case. I could see the statement above (and any other assignment that writes to an array) being defined equivalent to memcpy((void *) lhs, (void