指针的整数表示是什么?
指针值是仅指向动态对象的安全派生指针 如果它有一个对象指针类型,它是以下之一:
[...]
- 对安全派生的指针值的整数表示的reinterpret_cast的结果;
[...]
我怀疑以下内容:
类型int
小于任何指向类型的指针。特别是,使用reinterpret_cast
无法将指针转换为int。
答案 0 :(得分:3)
该术语在标准的下一段中定义。
整数值是安全派生指针的整数表示,仅当其类型至少与其一样大时
std::intptr_t
,它是以下之一:- 安全派生的指针值
reinterpret_cast
的结果;- 安全派生指针值的整数表示的有效转换结果;
- 从可跟踪指针对象复制其值的对象的值,其中的时间为 复制源对象包含安全派生指针值的整数表示;
- 加法或按位运算的结果,其中一个操作数是a的整数表示 安全派生的指针值
P
,如果由reinterpret_cast<void*>
转换的结果将进行比较 等于可从reinterpret_cast<void*>(P)
计算的安全派生指针。