c - 在 64 位机器上每个指针变量的大小为 8 字节如何证明是合理的?
问题描述
我经历了指针算术以及不能将一种数据类型的指针分配给另一种数据类型的事实。例如,下面的声明是不正确的。
double x = 10;
int *ptrInt = &x;
我们已经将 double 变量的地址分配给“指向整数的指针”。与整数相比,Double 占用 8 个字节,整数占用 4 个字节,因此整数指针将截断那些额外的 4 个字节。
但是怎么会,任何指针变量的大小都是 8 个字节,这也意味着它不会截断那些额外的 4 个字节并且应该可以正常工作(即使它没有)。
我有这个疑问。有人可以帮我澄清一下吗?
解决方案
为什么任何指针变量的大小都是 8 个字节?指针变量包含地址和地址大小8 byte
在64-bit
系统上,无论指针变量是否指向或int
对象作为指针支持地址空间。char
float
64-bit
8 byte
推荐阅读
- javascript - 无法从网页将数据设置到 Cloud Firestore
- php - App\Entity\User 的查询缺少标识符 id
- c++ - 从 OpenCV 4.5.1 更改为 3.4.0 时出错
- java - Jsoup - 使用相对路径测试有效的输入正文 html
- html - 如何使用 flexbox 定义动态表格布局
- visual-studio-code - 解决合并冲突的 VS 代码通常将当前和传入作为 2 个完全独立的块呈现,不费力寻找差异
- r - 计算数据框中变量中多个字母的出现次数?
- jms - Mule 4 - 如何为 JMS 连接器设置会话 ID
- php - 动态创建的 php bind_param 未按预期工作
- r - 在 r 中重新排序列时选择的数据框未定义列中的错误