我可以直接为指针分配地址吗?如果是,如何做到这一点

Can I directly assign an address to a pointer? If so, how to do that?

本文关键字:如果 何做 这一点 指针 地址 分配 我可以      更新时间:2023-10-16
int main()
{
int a = 2; // address is 0x7ffeefbff58c
int *b = &a;
std::cout << "address of a: " << b << std::endl;
return 0;
}

我在地址0x7ffeefbff58c处有一个int变量a,但我可以用0x7ffeefbff58c直接分配int*b吗?

我尝试过int*b=0x7ffeefbff58c;但是有一个错误说"不能用'long'类型的右值初始化'int*'类型的变量",那么我必须使用(&a(的地址来初始化指针吗?或者还有别的办法?

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

从技术上讲,是的。

如果是,如何做到这一点?

具有重新解释的强制转换。

但是要意识到,通常绝对不能保证a会在地址0x7ffeefbff58c中。因此,将这样的整数重新解释为指针并没有什么可做的。使用局部变量执行此操作将是毫无意义的。

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

Heere就是一个例子:

#include <iostream>
int main()
{
int *b = (int*) 0x7ffeefbff58c;
std::cout << "b: " << b << std::endl;
return 0;
}

编译和执行后,您将看到输出:

b: 0x7ffeefbff58c

相关文章: