今晚在看求数组元素个数这块内容,代码如下:
#include <iostream>int main(){
int a[12];//定义数组aauto b = a;std::cout << sizeof(b) / sizeof(int) << std::endl;//打印数组b的元素个数std::cout << sizeof(int*) << std::endl;}
一个指针占4位,但我电脑是64位机(cmd命令窗口内输入systemInfo):
后查看vs code,把x86(VS工程配置为win32)改成x64即可将VS工程配置为win64,则可以得到占用8个字节的指针。
此时代码输出:
总结:
一个地址是32位,任何指针都是一个地址,所以就是占用4byte(32位),在不同的硬件平台上,指针变量占用的内存大小与其地址值的范围大小成正比。
如果CPU是32位,内存是CPU能够直接访问的区域,CPU每次处理的数据也是32位,那CPU能够直接访问的内存大小就是2的32次方,也就是4GB。
如果CPU硬件是64位的,操作系统也是64位的,但是由于vs建立的工程用的是win32,对应于32位的编译器,则所用到的指针类型实际上还是4个字节,即为32位;如果将VS工程配置为win64,则可以得到占用8个字节的指针。