【发布时间】:2014-06-12 10:40:05
【问题描述】:
我不知道如何使用指针进行类型转换
double x = 0.7;
int *ptr = (int *)&x;
*(byte )&x 发生了什么? &x 表示变量x的地址。那么类型转换地址是什么意思呢?现在 ptr 也可以引用 x 吗?如果是,那么我们不会丢失数据吗?
还有 ptr 的大小是多少?
【问题讨论】:
-
将 this 转换为 int 指针没有意义,因为您正在丢失信息。 Double 是 8 字节和 int 4。关于大小,指向任何东西的指针使用 4 或 8 字节,具体取决于架构,32 位或 64 位。
-
你在 Quake 快速反平方根上吗?如果不是,您可能会觉得这很有趣。 Q_rsqrt。基本上,类型双关仅在内存布局相同的情况下才有效,而对于 int 和 float 则无效,因为它们使用不同的内存布局。
-
你知道
(byte *)&x和*(byte )&x是两个不同的东西吗?您似乎将它们视为相同的。
标签: c pointers casting pointer-conversion