In C-Programmen wird in der Regel eine unendliche Zeigerumleitung verwendet. Eine oder zwei statische Ebenen sind üblich. Dreifache Indirektion ist selten. Aber unendliche Indirektion ist sehr häufig.
Die unendliche Zeigerumleitung wird natürlich mit Hilfe einer Struktur erreicht, nicht mit einem direkten Deklarator, was unmöglich wäre. Und ein struct wird benötigt, damit man auf den verschiedenen Ebenen, auf denen es enden kann, andere Daten in diese Struktur aufnehmen kann.
struct list { struct list *next; ... };
jetzt können Sie list->next->next->next->...->next
. Es handelt sich eigentlich nur um mehrere Zeigerumleitungen: *(*(..(*(*(*list).next).next).next...).next).next
. Und die .next
ist im Grunde ein Noop, wenn es das erste Glied der Struktur ist, also können wir uns das so vorstellen ***..***ptr
.
Hierfür gibt es eigentlich keine Grenzen, da die Links mit einer Schleife durchlaufen werden können, anstatt mit einem riesigen Ausdruck wie diesem, und außerdem kann die Struktur leicht kreisförmig gestaltet werden.
Mit anderen Worten, verknüpfte Listen sind das ultimative Beispiel für das Hinzufügen einer weiteren Ebene der Indirektion, um ein Problem zu lösen, da man dies dynamisch mit jeder Push-Operation macht. :)