内存地址
一个内存地址可存储 8 bit = 1 byte(字节)
32位操作系统可寻址空间为 2^32 (Byte) = 2^10 * 2^10 * 2^10 *4 = 4 GB
数据所占内存大小
C声明 | 字节数 | 字节数 |
---|---|---|
有符号 | 32位 | 64位 |
char | 1 | 1 |
short | 2 | 2 |
int | 4 | 4 |
long | 4 | 8 |
char* | 4 | 8 |
float | 4 | 4 |
double | 8 | 8 |
大端小端
32bit宽的16进制 0x12345678 在内存中的存放方式:
大端: 高字节存储在低地址,低字节存储在高地址
内存地址 | 0x4000 | 0x4001 | 0x4002 | 0x4003 |
---|---|---|---|---|
存放内容 | 0x12 | 0x34 | 0x56 | 0x78 |
小端: 低字节存储在低地址,高字节存储在高地址
内存地址 | 0x4000 | 0x4001 | 0x4002 | 0x4003 |
---|---|---|---|---|
存放内容 | 0x78 | 0x56 | 0x34 | 0x12 |
union 共用体
任何时刻共用体中只存放了一个被选中的成员
所有成员都从低地址开始存放
结构体和共用体的区别在于:
结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个