为了账号安全,请及时绑定邮箱和手机立即绑定

指针的大小是多少?

指针的大小是多少?

C++
长风秋雁 2019-11-12 09:59:05
指针的大小是否与其指向的类型的大小相同,还是指针始终具有固定的大小?例如...int x = 10;int * xPtr = &x;char y = 'a';char * yPtr = &y;std::cout << sizeof(x) << "\n";std::cout << sizeof(xPtr) << "\n";std::cout << sizeof(y) << "\n";std::cout << sizeof(yPtr) << "\n";它的输出是什么?将sizeof(xPtr)返回4并sizeof(yPtr)返回1,还是2个指针实际上返回相同的大小?我问这的原因是因为指针存储的是存储器地址,而不是它们各自存储的地址的值。
查看完整描述

4 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

例如,指针通常具有固定的大小。在32位可执行文件上,它们通常是32位。有一些例外,例如在旧的16位Windows上,当您必须区分32位指针和16位指针时...通常可以很安全地假定它们在现代桌面操作系统的给定可执行文件中是统一的。

编辑:即使这样,我也强烈警告不要在您的代码中进行此假设。如果您要编写绝对必须具有一定大小的指针的东西,则最好检查一下!


查看完整回答
反对 回复 2019-11-12
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

在X86机器上,功能指针的大小可能会非常不同,从4字节到20字节(取决于编译器)。因此,答案是否定的-大小可能会有所不同。

另一个例子:以8051程序为例,它具有三个内存范围,因此具有三个不同的指针大小,即8位,16位,24位,具体取决于目标所在的位置,即使目标的大小始终相同(例如,char) 。


查看完整回答
反对 回复 2019-11-12
?
呼如林

TA贡献1798条经验 获得超3个赞

在32位计算机上,sizeof指针为32位(4字节),而在64位计算机上,它为8字节。无论它们指向什么数据类型,它们的大小都是固定的。


查看完整回答
反对 回复 2019-11-12
  • 4 回答
  • 0 关注
  • 1797 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信