解密C指针代码

时间:2014-07-01 05:10:04

标签: c

我是C的新手,遇到了一些处理指针的代码,可以使用一些帮助解密它。这是什么意思?它似乎是将变量p转换为指向int的指针。我对(int *)代码感到困惑。

*(int *)p = 0x113

3 个答案:

答案 0 :(得分:7)

它将p强制转换为指向int的指针,然后将(整数)值0x113存储在引用的位置。

答案 1 :(得分:4)

当您遇到类似这样的事情时,接近它的最佳方法是将其分开,一步一步。从立即转换有问题的变量开始,然后从那里开始。这是它

*  (int *)  p 

从中间开始,你有一个类型为int的指针:

(int *)

演员表在变量p上运行。所以你知道你正在向p投射int *。因此,以下只是说将变量p转换为int *

(int *)p

然后拼图的最后一部分是*,它说取消引用整个'shebang'。因此,在最终形式中,您只需取消引用p已被强制转换为int *

*(int *)p

答案 2 :(得分:2)

它表示“将p视为指向int类型的指针,然后在p指向的4个字节中存储0x113的值”(假设int为4个字节)。 结果是,例如,如果p被声明为char的指针,则此命令将能够修改4个字节而不是仅仅一个(char的大小)。