C语言 数据类型
数据类型表示一个内存块的长度和解释方式
数据类型决定长度:我们一个内存地址(0x30000000),本来这个地址只代表1个字节的长度,但是实际上我们可以通过给他一个类型(int),让他有了长度(4),这样这个代表内存地址的数字(0x30000000)就能表示从这个数字(0x30000000)开头的连续的n(4)个字节的内存格子了(0x30000000 + 0x30000001 + 0x30000002 + 0x30000003)。
数据类型决定解析方法:譬如我有一个内存地址(0x30000000),我们可以通过给这个内存地址不同的类型来指定这个内存单元格子中二进制数的解析方法。譬如我 (int)0x30000000,含义就是(0x30000000 + 0x30000001 + 0x30000002 + 0x30000003)这4个字节连起来共同存储的是一个int型数据;那么我(float)0x30000000,含义就是(0x30000000 + 0x30000001 + 0x30000002 + 0x30000003)这4个字节连起来共同存储的是一个float型数据;
(32位机器)C语言各种数据类型所占内存大小(字节数,一个字节8位)
1: char a: sizeof(a) = 1;
2: int a : sizeof(a) = 4;
3: short a: sizeof(a) = 2;
4: long a: sizeof(a) = 4;
5: double long a: sizeof(a) = 8;
6: float a: sizeof(a) = 8;
7: struct a{
char b;
int c;
short d;
};
struct a a1;
sizeof(a1) = 1+4+2 =7;
8: union a{
char b;
int c[10];
short d;
};
union a a1:
sizeof(a1) = sizeof(c) = 4*10 = 40;
9:char* a; sizeof(a) = 4;