int i=*(int *)&x; 这句话在c语言里面是什么意思?

如题所述

int i=*(int *)&x;相当于int i=x;功能是把x的值赋给i
*(int *)&x,其中&x是对变量x的地址,(int *)把它转化成int型指针,最前面再加上一个*进行解引用,结果就是变量x的值。追问

这个和 i=x有什么区别吗?

追答

如果x也是int型变量,那么可以认为二者等价!

如果x不是int型变量,比如是float型变量,那么语句int i=*(int *)&x;执行后,i的值会变得很神奇(可能会让你惊讶)

而语句int i=x;执行后,i的值是对x的值取整,举个例子,看以下代码:

#include <stdio.h>
int main(void)
{
    float x=3.5;
    int i=*(int *)&x;
    printf("%d\n",i);
    return 0;
}

以上程序的结果,输出i的值应该是以1开头的很大的整数,而把语句int i=*(int *)&x;改成

int i=x;后,输出i的值为3

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-03-10
&x:表示取变量x的地址值,地址即指针。

(int *)&x:表示将&x指针强制转换为int *类型指针。
int i = *(int *)&x:表示取首地址是&x的内存空间中int类型的值(int类型是占4个字节的内存空间的),将该值赋值给整型变量i。追问

这个和 i=x有什么区别吗?

本回答被网友采纳
相似回答