指针在64位中占8个字节,在32位中占4个字节
char *c[5]:指针数组,存放了5个指针的数组,占40个字节。
char (*c) [5]:数组指针,指向一个存放五个元素的数组指针,占8个字节。
结构体的内存对齐:以最大的数据类型为单位进行字节对齐。如果是结构体的嵌套,就将结构体展开,看最大的数据类型。
例:C
p为指针,占8个字节。*p为结构体,占32字节。p->a占1个字节,p->e占8个字节。
int c:16。说明c占16位,2个字节。
数值在计算机内的存储方式:
大端模式:将数值的高位存在低地址中
小端模式:将数值的高位存在高地址中
例:0X12345678
低《----------------------------》高
大端:0X12 0X34 0X56 0X78
小端:0X78 0X56 0X34 0X12 由于是栈存储,所以高位存储在低地址。
共用体的内存对齐:必须能放下最大的变量,该内存值是所有数据类型的整数倍,内存取其中最大变量的值。
下图结构体中嵌套共用体时:内存大小为16字节
判断计算机为大端小端:
typedef和define区别:
typedef:数据类型替换
define:单纯代码替换