不同数据类型的大小
相同位数的系统下,每一个变量的地址大小相同
1 | int32_t va; int32_t* vb; double vc; double* vd; uint8_t ve; uint8_t* vf; intptr_t vg; |
以上变量地址大小都是 8 ,因为在64位体统下。
相同位数的系统下,不同类型变量占有的空间大小不同
1 | int32_t va; int32_t* vb; double vc; double* vd; uint8_t ve; uint8_t* vf; intptr_t vg; |
这里*vb == vb[0]
不同位数的系统下,不同/相同变量占有的大小不同
当申请一块 uint_8* buff 时,系统划分出一个8字节的大小,存储了一个指向随机位置的指针。
buff = (uint_8*)calloc(seizeof(*buff) * 10,0 ); 时,buff指向了一块地址。这块地址保存的都是十个 1字节的uint_8数据。
1 | uint8_t* aa; |
uint8 int float double 怎么在计算机内存储
uint8:占一个字节八位, 无符号数,0~255,算数or逻辑左移右移就是左右移动,舍去移动的位数然后补零
int32 :四个字节32位,有符号数,最高位代表符号。
最大数2147483647的原码为0111 1111 1111 1111 1111 1111 1111 1111
最小数-2147483648的补码表示为1000 0000 0000 0000 0000 0000 0000 0000,在32位没有原码。
对有符号数逻辑左右移动不考虑符号,算数右移补符号位。
float32: 四字节32位,有符号数,最高位代表符号。E代表指数 2E M代表尾数