指针和引用
Pointers and references
我目前正在学习 C++ 和 C++ 内部的指针。我很好奇为什么我在引用指针时得到不同的内存地址,以及为什么它与对变量的引用不同。这是我超级简单的代码:
#include <iostream>
using namespace std;
int main() {
int n = 50;
int *p = &n;
cout << "Number: " << n << endl;
cout << "Number with &: " << &n << endl;
cout << "Pointer: " << p << endl;
cout << "Pointer with *: " << *p << endl;
cout << "Pointer with &: " << &p << endl;
}
为什么 &p 给我的地址与“&n”和“p”不同?谢谢
首先声明一个 int 变量 n,value 为 50。该值将存储在内存中的某个地址。当您打印 n 时,您将获得变量 n 所持有的值。
然后声明一个指向变量n的指针*p。这是一个新变量,它将 address 保存到变量 n,它存储在内存中。当你打印 p 你会得到 address.
您还可以使用 & 符号询问存储 n 值的 地址 。这就是你打印 &n 时得到的,这将与指针 p.
相同
在指针前使用 * 符号将取消引用它,这意味着不是 returning 指针地址,而是 return 值 指针所指向的。在您的情况下,这是一个值为 50 的 int。
最后,您声明的指针 *p 存储在内存中它自己的地址。正如您可以使用 & 符号获取变量 n 的 address 一样,您可以使用 &p 获取 p 的 address。这将不同于 n 的地址,因为它不是存储 50 的位置,而是存储指向值 50 的指针的位置。
我目前正在学习 C++ 和 C++ 内部的指针。我很好奇为什么我在引用指针时得到不同的内存地址,以及为什么它与对变量的引用不同。这是我超级简单的代码:
#include <iostream>
using namespace std;
int main() {
int n = 50;
int *p = &n;
cout << "Number: " << n << endl;
cout << "Number with &: " << &n << endl;
cout << "Pointer: " << p << endl;
cout << "Pointer with *: " << *p << endl;
cout << "Pointer with &: " << &p << endl;
}
为什么 &p 给我的地址与“&n”和“p”不同?谢谢
首先声明一个 int 变量 n,value 为 50。该值将存储在内存中的某个地址。当您打印 n 时,您将获得变量 n 所持有的值。
然后声明一个指向变量n的指针*p。这是一个新变量,它将 address 保存到变量 n,它存储在内存中。当你打印 p 你会得到 address.
您还可以使用 & 符号询问存储 n 值的 地址 。这就是你打印 &n 时得到的,这将与指针 p.
相同在指针前使用 * 符号将取消引用它,这意味着不是 returning 指针地址,而是 return 值 指针所指向的。在您的情况下,这是一个值为 50 的 int。
最后,您声明的指针 *p 存储在内存中它自己的地址。正如您可以使用 & 符号获取变量 n 的 address 一样,您可以使用 &p 获取 p 的 address。这将不同于 n 的地址,因为它不是存储 50 的位置,而是存储指向值 50 的指针的位置。