解密C指针代码

解密C指针代码,c,C,我是C语言的新手,遇到了一些处理指针的代码,需要一些帮助来破译它。这是什么意思?它似乎将变量p转换为指向int的指针。我被(int*)代码弄糊涂了 它将p强制转换为指向int的指针,然后将(整)值0x113存储在引用位置。表示“将p视为指向int类型的指针,然后将0x113的值存储在p指向的4个字节中”(假设int为4个字节)。 其效果是,例如,如果将p声明为指向char的指针,则此命令将能够修改4个字节,而不是仅修改一个字节(char的大小)。当您遇到类似的情况时,最好的方法是将其分开,然后一

我是C语言的新手,遇到了一些处理指针的代码,需要一些帮助来破译它。这是什么意思?它似乎将变量p转换为指向int的指针。我被(int*)代码弄糊涂了


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

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

当您遇到类似的情况时,最好的方法是将其分开,然后一次执行一步。从立即铸造有争议的变量开始,并从那里开始。给你

*  (int *)  p 
从中间开始,您可以转换为int类型的指针:

(int *)
cast在变量
p
上运行。因此,您知道您正在将
p
转换为
int*
。因此,下面只是将变量
p
转换为type
int*

(int *)p
*(int *)p
最后一块拼图是
*
,上面写着取消对整个“shebang”的引用。因此,在其最终形式中,您只需取消引用已转换为
int*
p

(int *)p
*(int *)p