左值:数组和结构
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 之外 - 以保留兼容性。但是,这种语言没有 struct
s,所以 struct
s 中的数组赋值是可以的。
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 之外 - 以保留兼容性。但是,这种语言没有 struct
s,所以 struct
s 中的数组赋值是可以的。