c - 使用指针进行类型转换

标签 c pointers casting pointer-conversion

我不知道如何使用指针进行类型转换

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/

相关文章:

在 Microsoft C 中工作时对 "getting and clearing"感到困惑

c++ - 很难理解 char (*p)[sizeof(c)]; 的优先级原则;

c - 返回函数时出现段错误错误

c - XML 解析启动处理程序中的指针值已更改

c - 需要帮助理解这个用函数模拟 strcpy() 的 C 程序

sql - "Reduce"sql 十进制数据类型到最小精度和基于值的小数位数

从 ‘unsigned char’ 转换为 ‘int’ 可能会改变它的值

c++ - C和C++中将int值转换为char指针的区别

c - 解析数据流以获取控制字符串

C 字符串在函数中间随机改变值