(int *)&var是什么意思?

斯托曼

是什么意思(int*) &i

  char i;
  int* p = (int*) &i;
  ...
  *p = 1234567892;
  ...

如果是这样* &i,我会理解的。但是在这种情况下,这里是一个“ int”。

麦可

&i:表示采用i的地址(即char *)

(int*)&i :将该指针转换为整数指针(这样做不好/做错了,但是您告诉编译器这样做,所以它甚至都不会发出警告)

int* p = (int*)&i; :一条声明,将i的指针存储在p中(也将其强制转换:编译器甚至不会抱怨)

*p = 1234567892;:将这个值写入到p指向基本位置的几个字节中(尽管p认为它指向一个int,但它指向char!)。这些字节之一将以i结尾,但其他字节将覆盖i附近的字节。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章