如何保存指针地址,以便另一个指针可以继续处理它

How to save a pointer address, so that another pointer can continue working on it?

本文关键字:指针 另一个 继续 处理 地址 何保存 保存      更新时间:2023-10-16

有没有办法将指针的地址存储到任意变量(例如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 的初始方法可能会起作用。