【问题标题】:Different assignments in pointers指针中的不同赋值
【发布时间】:2020-08-09 22:14:59
【问题描述】:

正如您在代码中看到的,我为指针分配了不同的值:

  1. fin->siguiente = nuevo_nodo;
  2. fin = nuevo_nodo;

这有什么不同吗?

void append(Nodo *&frente, Nodo *&fin, int valor){
    Nodo *nuevo_nodo = new Nodo();
    nuevo_nodo->valor = valor;
    nuevo_nodo->siguiente = nullptr;
    if(empty(frente)){
        frente = nuevo_nodo;
    }
    else{
        fin->siguiente = nuevo_nodo;
    }
    fin = nuevo_nodo;
}

【问题讨论】:

  • 您的问题似乎是 XY 问题。请参阅:What is the XY problem?。您似乎正在为如何从节点形成链接列表而苦苦挣扎。你到底想完成什么?
  • 我看到了0x56021db72e ->f<- 00x56021db72e ->d<- 0 的区别
  • 您显示的输出包含 4 行和 3 个不同的地址。第二行和第四行是相同的 - 但这并不奇怪,因为它们打印 ptrptr3,输出前的最后一行是 ptr = ptr3; 那么“没有区别”是什么意思 - 你是什么意思期望与其他人有所不同?
  • 我已经更新了问题
  • 当然,这两个赋值修改了两个不同的对象。一个修改fin->siguiente,另一个修改fin

标签: c++ pointers struct


【解决方案1】:

既然你改成问题,那我也改一下答案。

当你的 else 部分运行时,你分配 'fin->siguiente = nuevo_nodo'。假设“fin”最初位于地址 1000,“nuevo_nodo”位于地址 2000。 fin 的 siguiente 指针指向地址 2000。

在下一行中,您分配了“fin = nuevo_nodo”,因此 fin 现在指向 2000 地址并且没有分配“siguiente”指针(第 4 行)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 2011-10-27
    • 2011-10-10
    • 1970-01-01
    相关资源
    最近更新 更多