【发布时间】:2018-04-13 08:18:03
【问题描述】:
有没有办法将指针的地址存储到任意变量中(例如int)并再次使用该变量来分配第二个指针的地址?
我知道你可以轻松做到
int* p1;
int* p2;
p2 = p1;
我要找的是这样的
int* p1;
int* p2;
long addr_p1 = (long)p1;
p2 = doMagicCast(addr_p1);
感谢您的建议
【问题讨论】:
-
为什么你的 addr_p1 必须很长?为什么不能是 int*?
-
您在寻找
std::uintptr_t吗?虽然如此,存储指针地址是相当冒险的事情,你应该解释为什么你需要这个 -
doMagicCast实际上就是(int*)。这将编译但不能保证工作,因为指针的大小可能与long的大小不同。还要考虑前面的两个 cmets。 -
我完全不清楚你想做什么。您是否正在寻找
void*? -
@iBug 实际上应该使用
reinterpret_cast,static_cast限制太多,无法编译。
标签: c++ pointers memory-management shared-memory