左值:数组和结构

时间:2016-05-17 14:40:20

标签: c arrays structure lvalue

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;

有什么区别?

1 个答案:

答案 0 :(得分:3)

有些历史原因导致数组不能自行赋值,但可以在struct内分配。这种差异确实没有技术上的原因。

Anecdottal heresay是指当C被设计时,它是基于某种语言(不记得哪一种!)没有阵列分配,所以这个功能也被排除在C之外 - 保持兼容性。但是,这种语言没有struct s,所以struct内的数组分配是OKayed。