有没有一种方法可以将指针的地址存储到任意变量(例如int)中,并再次使用此变量来分配第二个指针的地址?

我知道你可以轻松做到

int* p1;
int* p2;
p2 = p1;

我正在寻找的是这样的
int* p1;
int* p2;
long addr_p1 = (long)p1;
p2 = doMagicCast(addr_p1);

谢谢你的建议

最佳答案

这是正确的C++方法:

#include <cinttypes>

int main() {
  int* p1;
  int* p2;
  std::uintptr_t addr_p1 = reinterpret_cast<std::uintptr_t>(p1);
  p2 = reinterpret_cast<int*>(addr_p1);
}

您需要使用std::uintptr_t而不是long,因为不能保证long可以容纳一个指针。

但是在32位平台(long和指针通常为32位)上,使用long的初始方法可能有效。

关于c++ - 如何保存一个指针地址,以便另一个指针可以继续工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49812353/

10-11 23:02
查看更多