[英]Pointers and references in linked lists
struct node {
int data;
node* next;
};
int main()
{
int* p = nullptr;
std::cout << p << std::endl;
node* nu = new node;
std::cout << *&nu << std::endl;
}
问题: nu
是 memory 地址吗,指针真的只是 memory 地址还是我在这里遗漏的东西。 *nu有什么意义,是不是这个地址中包含的object, &nu
给了我memory地址本身。 如果nu
是 integer 它会给我一个数字吗? 将不胜感激。
&nu
使用 address-of 运算符来获取指针的地址,从而得到指向指针的指针。 *
间接运算符然后获取新指针的内容,这是原始指针nu
的值,也是您发送给cout
的值。
是 nu 一个 memory 地址,指针真的只是 memory 地址还是我在这里遗漏的东西。
nu
是一个指向node
的指针,这意味着nu
“指向”一个 memory 位置(在本例中是在堆上),该node
已在该位置构建。 memory 位置是地址,所以 yes nu
本质上是 memory 地址。 如果你打印它,你会得到一个十六进制值——地址本身。
*nu有什么意义,是不是地址中包含的object
诸如*nu
(或通常*pointer
)之类的语法转换为到达指针指向的位置。 *
称为解引用运算符,在 C++ 中用于获取指针后面的值。
&nu 给了我 memory 地址本身。
&
是获取变量地址的方式。 写&nu
表示要获取nu
变量的地址。 请注意,它不是node
的地址,而是nu
变量本身。 这个变量也存在于 memory 中(在堆栈上),地址也是如此。
如果 nu 是 integer 它会给我一个数字吗?
不,你也会得到地址。 &
给你变量的地址,而不是值。 使用指针可能会感觉很棘手,因为指针的值就是地址。
*&n
在这种情况下,您已经获得了nu
变量 (&n) 的地址,并立即获得了它后面的值 (*&nu)。 它等同于nu
,因为该值是堆上某处node
的地址。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.