我需要跟踪数据缓冲区中的当前位置(它将用作数据包),因此我使用了两个变量,bufferLoc和dataBuffer。

char dataBuffer[8192];
char** bufferLoc;


我用bufferLoc指向dataBuffer的起始位置。但是增加bufferLoc不会影响其在内存中的物理地址。

bufferLoc = (char**)&dataBuffer;

cout << &bufferLoc << endl;

bufferLoc++;

cout << &bufferLoc << endl;


这两张照片将输出相同的位置。我的错误与类型转换,bufferLoc本身或完全不同的东西有关吗?

谢谢你的帮助。

最佳答案

如果您打算一次遍历dataBuffer一个字节,那么第二个变量应该是一个指针,而不是指向指针的指针。

char* bufferLoc;


然后将其打印出来而无需使用“&”号:

cout << (unsigned int *)bufferLoc << endl;


请注意,除非您强制转换为unsigned int *,否则cout会尝试将变量打印为文本。

08-27 01:50