lvalue
被定义为可以为其分配值的表达式。
使用数组值赋值和数组是非法的。 E.g:
int x[2],y[2];
x = y;
结构可以视为lvalue
s。下面的结构分配是有效的。
typedef struct car {
char color[20];
int price;
} CAR;
CAR audi, bmw;
audi = bmw;
有什么区别?
答案 0 :(得分:3)
有些历史原因导致数组不能自行赋值,但可以在struct
内分配。这种差异确实没有技术上的原因。
Anecdottal heresay是指当C被设计时,它是基于某种语言(不记得哪一种!)没有阵列分配,所以这个功能也被排除在C之外 - 保持兼容性。但是,这种语言没有struct
s,所以struct
内的数组分配是OKayed。