c - 在 64 位机器上每个指针变量的大小为 8 个字节如何合理?

标签 c pointers

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

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

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

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

我有这个疑问。谁能帮我澄清一下吗?

最佳答案

为什么任何指针变量的大小都是 8 字节?指针变量包含地址且地址大小在 64 位上为 8 字节 code> 系统,无论指针变量是否指向 intcharfloat 对象(作为 64 位 指针支持) 8 字节 地址空间。

关于c - 在 64 位机器上每个指针变量的大小为 8 个字节如何合理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52341852/

相关文章:

c - Fiddler 事件日志字体操作

c - 分配和获取 union 值,类型双关

通过函数更改数组的值

c - C 中的代理服务器 - 多个

c - 尝试使用 malloc 为自定义结构分配内存时出错

c++ - 使用宏和 C 样式字符串混合 C/C++

pointers - 如何将数据库行扫描为指向结构的指针?

C++ 指向成员的指针

c - 理解给定的头文件

c++ - 在文件中写入字符数组时出现访问冲突