使用地址值初始化指针

use*_*113 1 c c++ pointers

我需要用已知的地址初始化一个指针变量。请看下面的代码,ptr是最终目的地,ptr_address的值包含地址值,所以我需要做类似ptr = value的操作。

int *ptr;
int address;

address = 0x10000005;
ptr = address;
Run Code Online (Sandbox Code Playgroud)

问题是编译器给出以下警告消息:

warning: assignment makes pointer from integer without a cast [enabled by default]
Run Code Online (Sandbox Code Playgroud)

我的代码是错误的还是有其他方法可以在不收到此编译器警告的情况下执行此操作?

Ker*_* SB 5

使用强制转换:

intptr_t some_variable = 25;

int * ptr1 = (int *) 0x10000005;
int * ptr2 = (int *) some_variable;
Run Code Online (Sandbox Code Playgroud)

或者在 C++ 中:

int * ptr1 = reinterpret_cast<int *>(0x10000005);
int * ptr2 = reinterpret_cast<int *>(some_variable);
Run Code Online (Sandbox Code Playgroud)

  • @user3142113:Kerrek SB 告诉你使用 `(int *) ptr_address`,现在你向我们展示使用 `ptr = *((int *) ptr_address);` 的代码,并抱怨它不起作用。当然不行;这不是您被告知使用的代码。使用 `ptr = (int *) ptr_address;`。 (4认同)
  • @user3142113:不,“(int*)ptr_address”并不*采用“ptr_address”的地址,它*确实*采用它的值。 (2认同)