是否可以将整数指针转换为位于该内存位置的实际整数
Is it possible to convert an integer pointer to the actual integer located at that memory location?
通常,我们在c++中这样声明变量:
int exampleInteger;
如果我有一个指向整数地址的指针怎么办?我可以声明一个位于某个内存地址的整数吗?
int* exampleIntegerPtr = (int*) 0x457FB;
int exampleInteger = *exampleIntegerPtr;
不幸的是,第二个示例中的exampleInteger与第一个示例中的exampleInteger不同。第二个示例创建了一个新变量,该变量与位于exampleIntegerPtr中的整数具有相同的值。是否有可能以某种方式抓取位于exampleIntegerPtr的实际整数?
是的,你可以使用引用,像这样:
int &a(*aPtr);
此时,对存储在aPtr
的int
所做的任何更改将反映在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;
相关文章:
- 如何获取矢量循环的整数位置
- 如何使此递归函数从给定的起始位置返回最小的整数?
- 如何在整数中找到最低有效位(LSB)的位置?c ++
- 在给定的整数数组中,可以找到在给定位置之间分类数组的整数之和
- 将表示位置的整数分解为多个部分,然后再返回
- C 中的内存模型:为什么在同一内存位置分配了结构中的两个整数
- 最快的函数将位置设置为一个无符号整数中两个位之间的位
- 调整数组大小功能不会更改内存位置
- 如何在字符串中的任意位置提取下一个整数
- 这两行有什么区别?在不同位置使用整数
- 如何获取哪个整数位于集合中的某个位置
- 构建一个程序,将 10 个整数放入数组中并识别重复的数字并输出它们及其位置编号的位置
- 如何根据一个整数的位置(偶数或奇数)将其分成两组
- 如何根据一个整数的位置(偶数或奇数)将其分成两组
- 是否可以将整数指针转换为位于该内存位置的实际整数
- 获取整数bitset中前导1位置的最快方法
- 在列表末尾插入一个整数,并在第n个位置删除
- 在二进制整数 (C++) 中读取后,fstream 是否移动到下一个位置
- 给定一个数字 n 和两个整数 p1,p2 确定位置 p1 和 p2 中的位是否相同.位置 p1、p2 和 1 为基础
- 获取64位整数中位位置的数组