什么是数据类型和它的本质
举一个形象的例子,蛋糕店做蛋糕。蛋糕店有很多不同模样的蛋糕,按体积有小的,中的,大的。三种体积的蛋糕分别对应有三个模子,我们给这三个模子分别取个名字,小的就叫char,中的叫short,大的叫int。现在,我们说这三个模子都有了名字,但这三个模子有什么作用呢?
那就来回顾下蛋糕是怎么做出来的,做蛋糕首先要有一团和好的面,把这团面拉长,给它起个名字,就叫内存条。现在要用这一团被拉长的面做小,中,大三个蛋糕,那就分别用三个模子在这团面上,“卡”上三下,就得到了三个体积的蛋糕。所以,模子的作用就是在面上“卡”出三个不同体积的面团。数据类型就是起了模子这样的作用,char模子可以在内存条上“卡”出1个字节,short可以“卡”出2个字节,int可以“卡”出3个字节。当我们定义了三个类型的变量
char c; //在内存中“卡”出1个字节
short s; //在内存中“卡”出2个字节
int i; //在内存中“卡”出4个字节
说的通俗一点,就相当于在内存条上这么“卡”“卡”“卡”三下,卡出了三块空间,分别为1字节,2字节和4字节,这就是类型的作用。在C语言中,类型都是有固定的大小的,这些个类型就是模子,需要用多大的地方放数据时,你只需要定义一个这样的模子。
小结
- 数据类型可以理解为固定内存大小的别名
- 数据类型是创建变量的模子
- 数据类型是模子,通过这个模子创建出来的东西,才是我们在C语言中实际可用的变量了
什么是变量和它的本质
接下来思考一个问题,通过char,short,int这三个模子,我们分别可以获得1个字节,2个字节和4个字节的空间,那怎么使用这些空间呢?我们可以通过给它们起别名来解决。对于大小为1个字节的这个空间,用c来命名这个空间,2个字节的空间用s来命名,4个字节的空间起名为i,代码来表示就是:
char c; //在内存中“卡”出1个字节,并为这1个字节起名c(以后变量c就对应这1个字节)
short s; //在内存中“卡”出2个字节,并为这2个字节起名s(以后变量s就对应这2个字节)
int i; //在内存中“卡”出4个字节,并为这4个字节起名i(以后变量i就对应这4个字节)
以后操作变量名本质其实就是在操作变量名所对应的空间,比如下面这句代码:
int i = 1;
表示将1存入变量i中,本质就是将1放入变量i所对应的那4个字节中。
小结
- 变量的本质是名字,是内存空间的名字
- 变量是一段实际连续存储空间的别名
- 程序中通过变量来申请并命名存储空间
- 通过变量的名字可以使用存储空间
总结
- 数据类型的本质就是一个模子
- 数据类型代表需要占用的内存大小
- 变量的本质是一段内存的别名
- 变量隶属于某一种数据类型
- 变量所在的内存大小取决于所属的数据类型