c++ - (char *) (msg +1) 这个 +1 带我们去哪里?

标签 c++ pointers c++11 char

我看到一段代码,其中有一条语句 (char *)(emsg+1) 被给出,

我猜 (char *) emsg 可能是一个字符串,但是 + 1 在这里做什么?

最佳答案

emsg 是指向某种类型(例如 int)的指针。 emsg + 1 指针加1,即指向初始地址+ sizeof(int)。然后,(char*) (emsg + 1) 是一个转换,即最终结果被转换为一个 char* 指针,所以你最终得到一个指针-char 指向初始地址 + sizeof(int).

通常,char* 是指向字符的指针,即类似于 C 的零终止字符串,但情况并非总是如此。当你想“提取”可寻址内存的最小单元时,你经常将指针转换为 char*,因为在大多数机器上 char* 是指向底层类型的指针一个字节 (char).

关于c++ - (char *) (msg +1) 这个 +1 带我们去哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29085751/

相关文章:

C++ 具有多个字符的多个定界符

c++ - MSVC2005 std::_Iterator_base::function 在调试时速度缓慢

go - 为了将 io.Reader 的内容作为字符串指针返回,我可以复制数据的最小次数是多少?

c++ - 如何/应该隐藏 C++ 静态成员变量和函数?

c++ - BackgroundSubtractorMOG灵敏度

c++ - 如何编写通用 std::vector Push_back 的模板函数?

c - 另一个结构中的结构的图形解释,但指向它的指针,

algorithm - 使用指针和链表 : how to iterate over a linked list, 更改和比较键

c++11 - 如何在 g++ -std=c++11 version 4.8.2 中使用 snprintf()

c++ - 逗号运算符、return 语句和 nullptr 没有副作用吗?