Я написал следующий фрагмент кода. У меня вопрос: в этих двух линиях:путаница о указателе структуры C++
r1 = r;
r1 = new node();
Я думаю, что когда r1
становится новым пустым узлом, r
должен быть новым пустым узлом, поскольку r1=r
является назначением указателя, так r1
и r
представляет то же самое адрес. Однако я должен ошибаться, потому что результат показывает, что r
здесь не был изменен. Может ли кто-нибудь объяснить это мне, почему r
не изменен? Спасибо.
#include<iostream>
using namespace std;
struct node{
int id;
node *child;
};
int main()
{
node *r = new node();
node *r1 = new node();
r->id = 100;
r1 = r;
r1 = new node();
r1->child = r;
cout << "r1 " << r1->id << endl;
cout << "r1 child " << (r1->child)->id << endl;
}
Результат:
r1 0
r1 child 100
Два указателя могут указывать на одно и то же, но все равно быть разными указателями. – aschepler
'r1 = r;' 'r1 = new node();' Итак ... 'r1' - это новый узел. Вывод вполне ожидаемый. – Ternvein