编程时需要使用字节,为了方便引入了数据类型。
1.什么是数据类型?
数据类型可以理解为固定内存大小的别名,也是创建变量的模子。
使用内存是需要借,为了方便引入变量。
什么是变量呢?
一段连续实际存储空间的别名。
程序中通过变量来申请并命名存储空间。
通过变量的名字可以使用存储空间。
实例:
#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;
}
运行结果:
1,1
2,2
4,4
解释:
char 是一个字节的别名,所以字节数为1。变量c是char定义的,即它的模子是char,所以变量c的字节也是1。
short 是两个字节的别名,所以字节数为2。变量s是short定义的,即它的模子是short,所以变量s的字节也是2。
int 是四个字节的别名,所以字节数为4。变量i是int定义的,即它的模子是int,所以变量i的字节也是4。
实例:#include<stdio.h>
typedef int INT32;
typedef unsigned char BYTE;
typedef struct demo
{
short s;
BYTE b1;
BYTE b2;
INT32 i;
}DEMO;
int main()
{
INT32 i32;
BYTE byte;
DEMO d;
printf("%d,%d\n",sizeof(INT32),sizeof(i32));
printf("%d,%d\n",sizeof(BYTE),sizeof(byte));
printf("%d,%d\n",sizeof(DEMO),sizeof(d));
return 0;
}
运行结果:
4,4
1,1
8,8
解释:
INT32是自定义的int的别名,所以INT32占4个字节,i32是INT32定义的,即它的模子是INT32,所以i32也占4个字节。
BYTE是自定义的unsigned char的别名,所以BYTE占1个字节,byte是BYTE定义的,即它的模子是BYTE,所以byte也占1个字节。
DEMO是自定义的struct结构体,struct的字节数是1个short的字节数加上2个BYTE的字节数加上1个INT32的字节数,即为8个字节,而d是DEMO定义的,即它是由DEMO产生的,所以d也占8个字节。
扩展:strcut定义的4个域可以分开使用。