在C++的程序中用到的大部分数据是动态变化的,字面值常量并不适合,这时候我们就要用到变量(variable)。在C++中,我们把内存中的一段连续的存储空间叫做一个对象(object)(注脚:这里的对象和面向对象(object-oriented)中的对象不是一个概念。面向对象里的对象是指现实世界中的物体,而这里的对象指的是一段内存空间。)。变量指的是一个有名字的对象,即内存里面的一段有名字的连续的存储空间(注脚:这个说法并不准确,变量还包括引用变量和成员变量。引用变量从定义上并不是内存里面的存储空间,成员变量本身也不代表内存里的存储空间,具体我们之后再讲。},变量的名字就叫做变量名,变量的值就是这段内存空间里存储的值。
每个变量都有自己的类型,变量的类型就是该变量所表示的内存空间所存储的数据类型。变量的类型可以是上一节提到过的任何一种基本数据类型(当然也可以是非基本数据类型),例如一段内存对象里存储的是int类型的数据,那么这个变量就是int类型。变量占用的内存空间的大小在绝大多数情况下就是该变量类型的大小(有时候为了让内存对齐,变量占用的内存空间会大于该变量的类型的大小)。
内存的存储单位为字节,每一个字节都有一个相对应的内存地址。变量就是内存中的一段连续地址所对应的存储空间。当程序读写内存中的一段连续的空间里面的存储内容的时候,需要知道两个东西,一是这段内存空间的首地址(第一个字节的地址),二是这段空间里存储的是什么类型的数据(知道了类型,便知道了这段内存空间的大小,以及这段内存空间的末地址)。但我们写程序的时候并不需要如此麻烦,因为编译器知道变量名所代表的内存空间的首地址和变量类型,我们只需要知道变量名就好了。当我们使用变量名的时候,编译器会自动转化为对相应的内存地址和内存里存储的数据类型的操作。
每个变量都有自己的类型,变量的类型就是该变量所表示的内存空间所存储的数据类型。变量的类型可以是上一节提到过的任何一种基本数据类型(当然也可以是非基本数据类型),例如一段内存对象里存储的是int类型的数据,那么这个变量就是int类型。变量占用的内存空间的大小在绝大多数情况下就是该变量类型的大小(有时候为了让内存对齐,变量占用的内存空间会大于该变量的类型的大小)。
内存的存储单位为字节,每一个字节都有一个相对应的内存地址。变量就是内存中的一段连续地址所对应的存储空间。当程序读写内存中的一段连续的空间里面的存储内容的时候,需要知道两个东西,一是这段内存空间的首地址(第一个字节的地址),二是这段空间里存储的是什么类型的数据(知道了类型,便知道了这段内存空间的大小,以及这段内存空间的末地址)。但我们写程序的时候并不需要如此麻烦,因为编译器知道变量名所代表的内存空间的首地址和变量类型,我们只需要知道变量名就好了。当我们使用变量名的时候,编译器会自动转化为对相应的内存地址和内存里存储的数据类型的操作。