如何将整数转换为指针,反之亦然

时间:2015-07-27 12:47:06

标签: c++

假设存在std::multiset<some_data_type> s,如何将此std::multiset的地址保存为整数,然后使用此整数指定其位置的其他指针?我的意思是可以做这样的事情:

std::multiset<int> mySet; 
//insert some data in mySet
int a = address_of(mySet);
std::multiset<int>* otherSet = location(a);

2 个答案:

答案 0 :(得分:4)

这是C ++ 11的intptr_t类型为您提供的<cstdint> ,如果您的系统支持它(标准没有强制要求)。

如果它可用,它保证足够大以容纳任何指针值(与int不同),并且被定义为转换为intptr_t相同的指针类型< / em>很安全。每次转换都需要reinterpret_cast

如果可以避免,通常不想这样做。尽可能使用原始指针类型。类型很好!

答案 1 :(得分:2)

您可以使用reinterpret_cast将指针存储到std::intptr_t or std::uintptr_t中,然后将其检索回来。这仅定义为从 - 并返回到完全相同的指针类型,[u]intptr_t的值是实现定义的。