繁体   English   中英

链表中的指针和引用

[英]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.

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