KsanaE-0
10/28/2017 - 8:39 AM

lvalue,rvalur

C语言中的变量一般具有带有两个性质,名字和值。当声明一个变量如

int k;

时,发生了两件事,一方面根据int,系统分配了(一般)2个字节的内存用以存放一个整数数值,另外设置了变量名表,加入了符号k和所分配的地址。之后遇到如

k = 2;

时,系统把k所对应的内存地址的置设置为2。所以我们说C语言的变量(例如名为var)具有一对特征值(内存地址addr,变量内容val)有时也分别称为(lvalue, rvalue)。lvalue在赋值号(=)左侧,而rvalue在赋值号右侧。一个变量名在赋值号左侧时表示地址,右侧时表示变量值。赋值语句val1 = val2,相当于左侧变量的地址内容设定为右侧变量的值。可以&var得到对应的地址addr,用*addr得到对应的内容va。内存中每一个字节具有一个地址,系统给不同类型变量分配的内存(称为一个memory cell)大小不同,如char型含有一个字节。而一个short型可能含有2个字节,一个long型可能含有4个字节。一个变量的地址定义为分配的内存区域的首字节地址。声明变量时要声明变量类型,相当于告知系统变量内存大小如何利用地址存取变量内容。系统为变量分配地址为一常数不可改变,但变量所存内容可以改变