本文已参与「新人创作礼」活动,一起开启掘金创作之路
文章目录
一、数据类型的本质
- 数据类型可以理解为固定内存大小的别名
- 数据类型是创建变量的模子
char、short和int 所占用的字节数
编辑
char、short和int 在内存空间定义变量示意图
编辑
二、变量的本质
- 变量是一段实际连续存储空间的别名
- 程序中通过变量来申请并命名存储空间
- 通过变量的名字可以使用存储空间
如下,其中变量 p 为指针变量:
编辑
类型是内存大小的别名,变量是具体的内存空间的别名,那么类型和变量之间有什么关系呢?下面通过一段程序来说明:
#include <stdio.h>
int main()
{
char c = 0;
short s = 0;
int i = 0;
printf("%d, %d\n", sizeof(char), sizeof(c));
printf("%d, %d\n", sizeof(short), sizeof(s));
printf("%d, %d\n", sizeof(int), sizeof(i));
return 0;
}
下面为输出结果:
编辑
由此可以看到,类型的内存空间大小与由该类型创建的变量的内存空间大小相同。
下面再看一段自定义类型与创建变量的代码:
#include <stdio.h>
typedef int INT32;
typedef unsigned char BYTE;
typedef struct _tag_ts
{
BYTE b1;
BYTE b2;
short s;
INT32 i;
} TS;
int main()
{
INT32 i32;
BYTE b;
TS ts;
printf("%d, %d\n", sizeof(INT32), sizeof(i32));
printf("%d, %d\n", sizeof(BYTE), sizeof(b));
printf("%d, %d\n", sizeof(TS), sizeof(ts));
return 0;
}
下面为输出结果:
编辑
这段代码也印证了前面说的数据类型与变量的本质。
三、小结
- 数据类型的本质是一个模子
- 数据类型代表需要占用的内存大小
- 变量的本质是一段内存的别名
- 变量隶属于某一种数据类型
- 变量所在的内存大小取决其所属的数据类型