【发布时间】:2012-12-15 02:10:53
【问题描述】:
我正在尝试将地址的值存储在非指针 int 变量中,当我尝试对其进行转换时,我收到编译错误“从 'int*' 到 'int' 的无效转换”这是我的代码正在使用:
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
vector<int> test;
int main() {
int *ip;
int pointervalue = 50;
int thatvalue = 1;
ip = &pointervalue;
thatvalue = ip;
cout << ip << endl;
test.push_back(thatvalue);
cout << test[0] << endl;
return 0;
}
【问题讨论】:
-
从您拥有的代码中,存储指针向量并打印它们是一回事。
-
你为什么要这样做?单独的转换不是很便携(并不是每个环境都有
uintptr_t),您可能想要对结果进行的任何算术运算要么使用指针更容易,要么更不便携。 -
如果您将指针值转换为整数类型,则很有可能您做错了什么。这是一个合法的转换,如果你做对了(如果机器有 some 整数类型,它大到足以保存结果而不会丢失信息),但 99% 的情况下你会过得更好只是将指针视为指针。如果您告诉我们您想对指针值做什么,而您认为最好使用整数,也许我们可以帮助您在不进行转换的情况下完成。