内存地址在链表c++

Memory address in linked list C++

本文关键字:c++ 链表 地址 内存      更新时间:2023-10-16

我用c++创建了一个非常简单的链表示例来练习一些面试问题。我有一个奇怪的问题,我似乎真的不能理解:

while( cur )
{
    cout << "Index: " << indx << endl <<
        "Current Add:t" << &cur << endl <<
        "Value:tt" << cur->val << endl <<
        "Next Add:t" << &cur->next << endl << 
        "Ran Add:t" << &cur->ran << endl <<
        "Ran Val:t" << cur->ran->val << endl << endl;
    cur = cur->next;
    ++indx;
}

我使用这段代码来遍历并打印列表。它工作得很好。然而。当前节点的地址总是相同的。该列表包含一个int值和一个指向下一个节点的指针,以及一个指向列表中随机地址的指针。地址和值被正确分配,我可以看到"下一个"地址。但是当它将它分配给当前节点时它似乎总是指向相同的地址。

我唯一可以假设的是,在执行过程中,它将"cur"移动到某个寄存器,因此总是显示此地址而不是内存中的位置。这有道理吗?这是正确的还是我错过了什么?这不会以任何方式影响我的实现,它只是一些奇怪的行为,我想更好地理解。

谢谢

你正在打印:

"Current Add:t" << &cur << endl <<

这是变量的地址:

struct node *cur;

指针的地址(不是它指向的地址!)当然不会改变。您可能想写:

"Current Add:t" << cur << endl <<