指针的大小是否与其指向的类型的大小相同,还是指针始终具有固定的大小?例如...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位指针时...通常可以很安全地假定它们在现代桌面操作系统的给定可执行文件中是统一的。
编辑:即使这样,我也强烈警告不要在您的代码中进行此假设。如果您要编写绝对必须具有一定大小的指针的东西,则最好检查一下!
慕田峪4524236
TA贡献1875条经验 获得超5个赞
在X86机器上,功能指针的大小可能会非常不同,从4字节到20字节(取决于编译器)。因此,答案是否定的-大小可能会有所不同。
另一个例子:以8051程序为例,它具有三个内存范围,因此具有三个不同的指针大小,即8位,16位,24位,具体取决于目标所在的位置,即使目标的大小始终相同(例如,char) 。
- 4 回答
- 0 关注
- 1843 浏览
添加回答
举报
0/150
提交
取消