在32位地址中,有32根地址线,地址线是物理线,通电后,电信号转化为数字信号:1和0组成的二进制序列。
00000000 00000000 00000000 00000000
...
10000000 00000000 00000000 00000000
...
11111111 11111111 11111111 11111111
这样就可以生成2^32个内存单元。
假设一个内存单元是 1 bit,
则2^32 / 8 = 536870912 B / 1024 = 524288 KB / 1024 = 512 MB / 1024 = 0.5 GB
然而在32位中,char类型大小为1字节(1Byte)-- 8 bit(内存单元)
一个char类型竟然占用8个内存单元,不合理且浪费!!
所以一个内存单元是1Byte合理。
#include<stdio.h>
int main(){
printf("%d\n",sizeof(int*)); //8
printf("%d\n",sizeof(char*)); //8
printf("%d\n",sizeof(double*)); //8
printf("%d",sizeof(float*)); //8
return 0;
}
指针是存放地址的,本机为64位,所以64个二进制位(64 bit)占用的内存 64 / 8 = 8 Byte