关于变量

来源:互联网 发布:软件登录界面 编辑:程序博客网 时间:2024/05/11 22:03

变量的含义

程序由代码和数据组成,变量用于存取数据的中间运算结果。所以变量拥有以下基本特征:


·变量名(lable):文本识别符号,以方便使用变量。

·变量值(value):我们想要存取的数据。

·变量容器(container):用于存放数据。

·变量类型(type):数据存取的规则。


打个比方:变量容器像盒子,上面贴着变量名的标签,里面则存有变量值。变量类型则是盒子的大小和形状。
简单变量像是一个盒子,数组像是盒子里面套盒子,结构则像是一组盒子。
联合的盒子上面有两个观察孔。

变量容器的具体实现

变量容器由1个或多个内存字节组成。

·存储容器首地址(address):编译器决定,用于生成最终代码。取变量值时用到。

·变量类型(type):决定存储容器使用多少字节,其中内容如何组织/如何解读。变量类型也决定了其运算的行为。


举例1:

int a=5;

-------------------

lable为a

addres=0x00280758 (编译器决定,此处为示意性举例)

type=int: 容器中包含4字节,intel CPU上按LITTLE ENDIAN排列(低字节在前,首地址可取到byte0,首地址+3可取到byte+3)

value=5: 实际上,容器中的机器码为05 00 00 00


举例2:

double b=-1.1;

-------------------

lable为a

addres=0x00280760 (编译器决定,此处为示意性举例)

type=double: 容器中包含8字节,intel CPU上按LITTLE ENDIAN排列(低字节在前,首地址可取到byte0,首地址+7可取到byte+7)

value=-1.1: 实际上,容器中的机器码为9A 99 99 99  99 99 F1 BF


变量的使用


取变量名称

C/C++没有函数可以取变量名称,只能用宏定义的办法变成字符串以供调用
#define DUMP_VAR(a) {\printf("变量名称:%s\n", #a);\//...\}

取变量值

在表达式、函数参数中,直接书写变量名就是取变量值。
cout << "变量值:" << a << endl;

使用变量容器

使用容器当然是存东西进去了,也就是赋值。
int a=5;int b=a;

注意第二个赋值语句,其含义为“取变量a的值,放入变量b的容器中”。
虽然赋值语句的左右都是变量名,但一指容器、一指取值,这也就是左值和右值的由来

“精神分裂”的数组名

在数组名的使用上,有着太多的规定,导致数组名表现出“精神分裂”般的不一致性。
规定一:在sizeof、&运算,以及以字符串字面量初始化字符串数组时,数组名作为容器整体进行处理
规定二:除上之外,作为函数参数或表达式中出现时,数组名退化为数组首元素的指针

原创粉丝点击