(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).