int main()
{
int a = 2; // address is 0x7ffeefbff58c
int *b = &a;
std::cout << "address of a: " << b << std::endl;
return 0;
}
我的 int 变量 a 位于地址 0x7ffeefbff58c,但是我可以直接用 0x7ffeefbff58c 分配 int* b 吗?
我尝试了 int * b = 0x7ffeefbff58c;
但是有一个错误说“无法用'long'类型的右值初始化'int *'类型的变量”,所以我必须使用a(&a)的地址来初始化指针吗?或者还有其他方法可以做到吗?
我可以直接用 0x7ffeebff58c 赋值 int* b 吗?
从技术上来说,是的。
如果是这样,该怎么做?
重新诠释演员阵容。
但请注意,一般来说绝对不能保证a
将位于地址 0x7ffeefbff58c 中。因此,对于将此类重新解释为指针的整数,您无能为力。使用局部变量执行此操作将是无意义.
将整数解释为指针很有用的情况是某些嵌入式系统为特殊目的保留一些常量内存地址。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)