首页 > 解决方案 > 在 64 位机器上每个指针变量的大小为 8 字节如何证明是合理的?

问题描述

我经历了指针算术以及不能将一种数据类型的指针分配给另一种数据类型的事实。例如,下面的声明是不正确的。

  double x = 10;
  int *ptrInt = &x;

我们已经将 double 变量的地址分配给“指向整数的指针”。与整数相比,Double 占用 8 个字节,整数占用 4 个字节,因此整数指针将截断那些额外的 4 个字节。

但是怎么会,任何指针变量的大小都是 8 个字节,这也意味着它不会截断那些额外的 4 个字节并且应该可以正常工作(即使它没有)。

我有这个疑问。有人可以帮我澄清一下吗?

标签: cpointers

解决方案


为什么任何指针变量的大小都是 8 个字节?指针变量包含地址和地址大小8 byte64-bit系统上,无论指针变量是否指向或int对象作为指针支持地址空间。charfloat64-bit8 byte


推荐阅读