(char *) (msg +1) 这个 +1 带我们去哪里?
(char *) (msg +1) where does this +1 takes us to?
我看到了一段代码,其中有一条语句 (char *)(emsg+1)
已给出,
我猜 (char *) emsg
可能是一个字符串,但是这个 + 1
在这里做什么?
emsg
是指向某种类型的指针(例如 int
)。 emsg + 1
指针加1,即指向初始地址+sizeof(int)
。然后,(char*) (emsg + 1)
是一个强制转换,即最终结果被强制转换为 char*
指针,因此您最终得到一个指向初始地址 + sizeof(int)
的指向字符的指针。
通常,char*
是指向字符的指针,即 C
-like 零终止字符串,但情况并非总是如此。当您想要 "extract" 可寻址内存的最小单元时,您经常将指针转换为 char*
,因为在大多数机器上 char*
是指向一个字节的基础类型的指针(char
).
我看到了一段代码,其中有一条语句 (char *)(emsg+1)
已给出,
我猜 (char *) emsg
可能是一个字符串,但是这个 + 1
在这里做什么?
emsg
是指向某种类型的指针(例如 int
)。 emsg + 1
指针加1,即指向初始地址+sizeof(int)
。然后,(char*) (emsg + 1)
是一个强制转换,即最终结果被强制转换为 char*
指针,因此您最终得到一个指向初始地址 + sizeof(int)
的指向字符的指针。
通常,char*
是指向字符的指针,即 C
-like 零终止字符串,但情况并非总是如此。当您想要 "extract" 可寻址内存的最小单元时,您经常将指针转换为 char*
,因为在大多数机器上 char*
是指向一个字节的基础类型的指针(char
).