从C11标准(§6.3.2.1 左值,数组和函数指示符)中可知:
可修改左值是一个左值,它不具有数组类型,不具有不完全类型,不具有const限定类型,如果它是结构体或联合体,则不具有任何成员(包括所有包含的聚合体或联合体的递归成员或元素)具有const限定类型。
来自《C in a Nutshell》的描述如下:
可修改左值是一个左值,它没有声明为const限定符类型(请参阅第180页的“类型限定符”),并且不具有数组类型。
为什么可修改左值不能具有数组类型?
数组类型的对象在创建时就被初始化,因此不能再次赋值。对于可修改左值,允许再次分配新值,而这与数组类型的对象相反。因此,数组类型的对象不能作为可修改的左值。
一个数组类型的对象总是隐式的const吗?
是的,数组类型的对象被视为常量指针,因此不能用作可修改的左值。
可修改左值是一个左值,它不具有数组类型,不具有不完全类型,不具有const限定类型,如果它是结构体或联合体,则不具有任何成员(包括所有包含的聚合体或联合体的递归成员或元素)具有const限定类型。
来自《C in a Nutshell》的描述如下:
可修改左值是一个左值,它没有声明为const限定符类型(请参阅第180页的“类型限定符”),并且不具有数组类型。
为什么可修改左值不能具有数组类型?
数组类型的对象在创建时就被初始化,因此不能再次赋值。对于可修改左值,允许再次分配新值,而这与数组类型的对象相反。因此,数组类型的对象不能作为可修改的左值。
一个数组类型的对象总是隐式的const吗?
是的,数组类型的对象被视为常量指针,因此不能用作可修改的左值。
lvalue = rvalue;
。 - Jonathan Leffler