结论:
计算机通过地址总线寻找内存中的一个字节,32位操作系统的地址总线位宽是32位,所以每一个字节的编址就会由32个0或者1组成,即4字节,它的寻址能力就是2^32(4GB);64位的字节地址就是8字节。
因此,在不同操作系统中指针大小结论:
(1)在32位操作系统下,指针是占4个字节空间大小,不管是什么数据类型
(2)在64位操作系统下,指针是占8个字节空间大小,不管是什么数据类型
在计算机中,CPU通过数据总线,地址总线,控制总线这三条总线和内存进行数据传输与操作。假设我们想通过CPU在内存中寻找一个变量a,首先CPU要通过地址总线,在内存中找到a的地址,通过控制总线知道该操作是读还是写,然后通过数据总线把数字传输到CPU中。
因此,我们知道:
地址总线的宽度决定了CPU的寻址能力,32位和64位的系统寻址能力分别32位和64位,对应指针分别是4字节和8字节。
数据总线的宽度决定了CPU单次数据传输的传送量,也就是数据传输速度
控制总线的宽度决定了CPU对其他控件的控制能力以及控制方式
实验:(实验环境 vs2017)
在 vs2017 中,我们可以直接打印测试 sizeof(int*) 的大小,当然,要测试不同的编译模式。
64位编译模式(编出来的程序目标是运行在64位操作系统上)下
64位编译模式下,sizeof返回的是unsigned long long类型,占8字节
32位编译模式下
32位编译模式下,sizeof返回的是unsgined int类型,占4字节
参考: