我需要跟踪数据缓冲区中的当前位置(它将用作数据包),因此我使用了两个变量,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会尝试将变量打印为文本。