左值:数组和结构

lvalue : array and structure

lvalue 被定义为可以赋值的表达式。 并且用数组值赋值和数组是非法的。例如:

int x[2],y[2];
x = y;

而结构可以视为 lvalue。以下结构分配有效。

typedef struct car {
    char color[20];
    int price;
} CAR;

CAR audi, bmw;
audi = bmw;

有什么区别?

有一些历史原因导致数组本身不可赋值,但可在 struct 内赋值。这种差异确实没有技术原因。

传闻说当 C 被设计时,它是基于某种语言(不记得是哪一种!),它没有数组赋值,所以这个特性也被排除在 C 之外 - 以保留兼容性。但是,这种语言没有 structs,所以 structs 中的数组赋值是可以的。