gpt4 book ai didi

c++ - 为什么这两个指向节点值的指针不相等?

转载 作者:太空宇宙 更新时间:2023-11-04 12:31:15 26 4
gpt4 key购买 nike

我想创建一个带指针的链表。所以我创建了一个带有指针和值的结构,指针指向列表的下一个节点。

当我尝试为下一个节点设置一个 poniter 时,我想通过从第一个节点指向它来更改下一个节点的值,但是当我尝试通过直接从节点结构访问来显示该值时,我得到另一个结果,我怎样才能使它们相等?这样一来,如果我更改一个节点,无论从何处更改,该节点都会更改其值。

这是一个我们需要使用链表的大学项目。我刚刚开始学习指针主题,所以我接受任何帮助。


#include <iostream>

struct node
{
double val;
node *nxt;
};

int main()
{
node n1, n2;

n1.val = 10;
n1.nxt = new node{n2};

n1.nxt->val = 20;

std::cout << "List:\n";
std::cout << n1.val << "\n"
<< n2.val << "\n";
}

实际结果:

列表:

10

1.39065e-309

预期结果:

列表:

10

20

最佳答案

改变这一行:

n1.nxt = new node{n2};

n1.nxt = &n2;

你所做的没有工作的原因是因为你正在用 n2 创建 new node{n2} 的拷贝(因为 C++ 为你的 implicit copy constructor 定义了一个 class )因此此拷贝的 val 更改为 20

通过使用 address-of [1] 运算符 ( & ),您可以将指针分配给 n2 的地址,从而可以使用 n1.nxt->val = 20 更改其值。

关于c++ - 为什么这两个指向节点值的指针不相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58584156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com