#c #pointers #struct
#c #указатели #структура
Вопрос:
Как вы можете видеть в коде, я присваиваю указателю разные значения:
- fin-&&t;si&uiente = nuevo_nodo;
- fin = nuevo_nodo;
Имеет ли это какое-либо значение?
void append(Nodo *amp;frente, Nodo *amp;fin, int valor){
Nodo *nuevo_nodo = new Nodo();
nuevo_nodo-&&t;valor = valor;
nuevo_nodo-&&t;si&uiente = nullptr;
if(empty(frente)){
frente = nuevo_nodo;
}
else{
fin-&&t;si&uiente = nuevo_nodo;
}
fin = nuevo_nodo;
}
Комментарии:
1. Ваш вопрос, похоже, является проблемой XY . Смотрите: В чем проблема XY? . Похоже, вы не знаете, как сформировать связанный список из ваших узлов. Чего именно вы пытаетесь достичь?
2. Я вижу разницу
0x56021db72e -&&t;f<- 0
и0x56021db72e -&&t;d<- 0
3. Вывод, который вы показываете, содержит 4 строки и 3 разных адреса. Вторая и четвертая строки одинаковы — но это неудивительно, поскольку они печатают
ptr
иptr3
, а самая последняя строка перед выводом —ptr = ptr3;
Итак, что вы подразумеваете под «без разницы» — что вы ожидали отличить от чего-либо еще?4. Я обновил вопрос
5. Разумеется, эти два назначения изменяют два разных объекта. Один изменяет
fin-&&t;si&uiente
, другой изменяетfin
.
Ответ №1:
Поскольку вы изменили вопрос, я тоже изменю ответ.
Когда выполняется ваша часть else, вы назначаете ‘fin-&&t;si&uiente = nuevo_nodo’. Скажем, ‘fin’ изначально был по адресу 1000, а ‘nuevo_nodo’ — по адресу 2000. исходный указатель fin указывает на адрес 2000.
В следующей строке вы присваиваете ‘fin = nuevo_nodo’, так что теперь fin указывает на адрес 2000, а указатель ‘si&uiente’ не назначен (строка 4).