繁体   English   中英

指针和引用

[英]Pointers and references

我目前正在学习 c++ 和 c++ 内部的指针。 我很好奇为什么我在引用指针时得到不同的 memory 地址,以及为什么它与对变量的引用不同。 这是我的超级简单代码:

#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”不同? 谢谢

首先,您声明一个值为50 的 int 变量 n。该值将存储在 memory 中的地址中。 当您打印 n 时,您将获得变量 n 所持有的值。

然后声明一个指向变量 n 的指针 *p。 这是一个新变量,它将保存变量 n 的地址,它存储在 memory 中。 当您打印 p 时,您将返回该地址

您还可以使用 & 符号询问存储 n 值的地址 这是你打印 &n 时得到的,这将与指针 p 相同。

在指针之前使用 * 符号将取消引用它,这意味着它不会返回作为指针的地址,而是返回指针所指向的 在您的情况下,这是一个值为 50 的 int。

最后,您声明的指针 *p 存储在 memory 中它自己的地址。 就像你可以用 & 符号得到变量 n 的地址一样,你可以用 &p 得到 p 的地址 这将不同于 n 的地址,因为它不是存储 50 的位置,而是存储指向值 50 的指针的位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM