如何将指针转换为 int

2021-12-31 00:00:00 pointers casting c++

我试图将地址的值存储在非指针 int 变量中,当我尝试转换它时,我收到编译错误从‘int*’到‘int’的无效转换"这是我的代码正在使用:

I'm trying to store the value of an address in a non pointer int variable, when I try to convert it I get the compile error "invalid conversion from 'int*' to 'int'" this is the code I'm using:

#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;
}

推荐答案

int 可能不够大,无法存储指针.

int may not be large enough to store a pointer.

您应该使用 intptr_t.这是一个显式大到足以容纳任何指针的整数类型.

You should be using intptr_t. This is an integer type that is explicitly large enough to hold any pointer.

    intptr_t thatvalue = 1;

    // stuff

    thatvalue = reinterpret_cast<intptr_t>(ip);
                // Convert it as a bit pattern.
                // It is valid and converting it back to a pointer is also OK
                // But if you modify it all bets are off (you need to be very careful).

相关文章