C++ 指针加法被乘

标签 c++ c pointers pointer-arithmetic

<分区>

我正在处理数据包代码,需要将指针移动 X 字节。当我告诉指针 pointer = pointer + X; 然后继续通过 to_string 或 cout 打印指针时,X*2 已添加到指针。我已经用多个值尝试过这个,包括常量和变量。我已经在操作前验证了指针的值。当发生这种情况时,我唯一能想到的是 3 正在某处移位。有什么想法吗?

示例代码:

cout << "Before: " << pointer << "\n";
pointer = pointer + 3;
cout << "After: " << pointer << "\n";

输出:

Before: 0x7ffff4604e93
After: 0x7ffff4604e99

我的包括:

#include <cstring>
#include <cstdlib>
#include <cstdarg>

谢谢,

迈克

最佳答案

当你使用

pointer = pointer + 3;

前后pointer的数值相差3*sizeof(*pointer)

在您的情况下,由于 sizeof(*pointer)2,您看到的差异为 6。一切正常。

关于C++ 指针加法被乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29174702/

相关文章:

c++ - 试图让我的程序继续使用 if/else 语句 C++

c - execvp 对内容进行排序

c - 如何有效地将 ram_base 文件复制到磁盘

char** 来处理字符串?

c++ - 编译器错误 : invalid conversion from 'int' to 'int*' [-fpermissive]|

c++ - 如何使用 C++ 以编程方式更新组策略?

c++ - 使用 zlib 附加到压缩文件

c - C 中指针和子进程的问题

c++ - 如何创建一个四维指针数组?

c++ - 如何避免虚拟继承