#C++小trick# std::cout << sizeof(int*) << std::endl;到底输出是4还是8?

今晚在看求数组元素个数这块内容,代码如下:

#include <iostream>

int main()
	{
	int a[12];//定义数组a
	auto 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个字节的指针。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cashapxxx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值