我可以直接将地址分配给指针吗?如果是这样,该怎么做?

1 c++ pointers

int main()
{
  int a = 2; // address is 0x7ffeefbff58c
  int *b = &a;
  std::cout << "address of a: " << b << std::endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在地址0x7ffeefbff58c中有我的int变量a,但是我可以直接为int * b分配0x7ffeefbff58c吗?

我尝试了int * b = 0x7ffeefbff58c; 但是有一个错误提示“无法用'long'类型的右值初始化'int *'类型的变量”,所以我必须使用(&a)的地址来初始化指针吗?还是有其他方法可以做到?

eer*_*ika 5

我可以直接给int * b分配0x7ffeefbff58c吗?

从技术上讲,是的。

如果是这样,该怎么做?

随着重新诠释演员。

但是请a务必意识到,绝对绝对不能保证地址为0x7ffeefbff58c。因此,将整数重新解释为指针没有什么可做的。用局部变量做到这一点是没有意义的

将整数解释为指针很有用的情况是某些嵌入式系统保留一些恒定的内存地址以用于特殊目的。