我是C的新手,遇到了一些处理指针的代码,可以使用一些帮助解密它。这是什么意思?它似乎是将变量p转换为指向int的指针。我对(int *)代码感到困惑。
*(int *)p = 0x113
答案 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的大小)。