我不知道如何使用指针进行类型转换
double x = 0.7;
int *ptr = (int *)&x;
*(byte )&x 发生了什么? &x 表示变量x的地址。那么地址类型转换是什么意思呢?现在 ptr 也可以引用 x 吗?如果是的话,我们不会丢失数据吗?
还有ptr的大小是多少?
最佳答案
该行获取变量x
的地址并将其值存储到ptr
。您必须强制转换该赋值,因为不允许将 double* 赋值给 int*。
通过在赋值后取消引用 ptr
,您违反了别名规则并导致程序显示未定义的行为。
ptr
的大小等于 sizeof( ptr )
或 sizeof( int* )
表达式的结果。
关于c - 使用指针进行类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24182343/