Ich habe Zweifel über diesen Code, den ich an der Universität sah.C++ Zeiger Zweifel
struct nodeList{
int data;
nodeList * next;
};
typedef nodeList * List;
void filter(List &l)
{
List * aux = &l;
while(*aux)
{
if((*aux)->data > 3)
{
List toDelete = *aux;
*aux = (*aux)->next;
delete toDelete;
}
else
{
aux = &((*aux)->next);
}
}
}
Ich weiß nicht, was
List * aux = &l;
tut tatsächlich tun. WeilList
ist das gleiche wienodeList *
so wäre der CodenodeList * * aux = &l;
und das ist eigentlich, was ich nicht verstehe, ist das ein Zeiger auf einen Zeiger, der die Adresse eines Zeigers vonnodeList struct
enthält?Die zweite Sache, die ich habe Schwierigkeiten zu verstehen, ist die letzte Zeile.
aux = &((*aux)->next);
Warum istaux
ohne*
auf der linken Seite? Wenn es alsList *aux = &l;
deklariert wurde istList
nur ein Zeiger auf den ersten Knoten?
Vielen Dank im Voraus. Ich habe viel gegoogelt, aber ich habe keine Antworten gefunden. Wenn Sie meine Fragen beantworten können, werde ich mich sehr freuen.
Vielleicht die Zeile: 'typedef nodeList * List;' sollte als 'typedef nodeList List geschrieben werden;' Und dann scheinen viele Dinge verständlich zu sein. – askmish
nein, die Zeile ist mit dem * Ich tippte das und es funktioniert. loswerden der Werte höher als 3 – HoNgOuRu