是否可以将整数指针转换为位于该内存位置的实际整数

Is it possible to convert an integer pointer to the actual integer located at that memory location?

本文关键字:整数 位置 于该 内存 指针 转换 是否      更新时间:2023-10-16

通常,我们在c++中这样声明变量:

int exampleInteger;

如果我有一个指向整数地址的指针怎么办?我可以声明一个位于某个内存地址的整数吗?

int* exampleIntegerPtr = (int*) 0x457FB;
int exampleInteger = *exampleIntegerPtr;

不幸的是,第二个示例中的exampleInteger与第一个示例中的exampleInteger不同。第二个示例创建了一个新变量,该变量与位于exampleIntegerPtr中的整数具有相同的值。是否有可能以某种方式抓取位于exampleIntegerPtr的实际整数?

是的,你可以使用引用,像这样:

int &a(*aPtr);

此时,对存储在aPtrint所做的任何更改将反映在a中:

*aPtr = 123;
cout << a << endl; // 123 is printed
*aPtr = 456;
cout << a << endl; // 456 is printed

当然,为了使其工作,您需要确保常量0x457FB确实代表一个可用于程序读写的有效地址。

正如dasblinkenlight所说,你可以使用引用来完成你想要的。我想补充一件事,因为我们使用的是c++,你应该更喜欢reinterpret_cast而不是C style cast,因为你明确了你的意图,它们更容易找到,更突出,前面的线程更详细地介绍了这一点。代码如下所示:

int* exampleIntegerPtr = reinterpret_cast<int*>(0x457FB);
int &exampleInteger = *exampleIntegerPtr;