Sebenarnya, program C umumnya menggunakan tipuan pointer tak terbatas. Satu atau dua level statis adalah umum. Tiga tipuan jarang terjadi. Tetapi tak terbatas sangat umum.
Peniruan penunjuk tak terbatas dicapai dengan bantuan struct, tentu saja, tidak dengan deklarator langsung, yang tidak mungkin dilakukan. Dan sebuah struct diperlukan agar Anda dapat memasukkan data lain dalam struktur ini pada level yang berbeda di mana ini dapat berakhir.
struct list { struct list *next; ... };
sekarang kamu bisa punya list->next->next->next->...->next
. Ini benar-benar hanya beberapa indirections pointer: *(*(..(*(*(*list).next).next).next...).next).next
. Dan pada .next
dasarnya adalah noop ketika itu adalah anggota pertama dari struktur, jadi kita bisa membayangkan ini sebagai ***..***ptr
.
Sebenarnya tidak ada batasan untuk ini karena tautan dapat dilalui dengan loop daripada ekspresi raksasa seperti ini, dan terlebih lagi, struktur dapat dengan mudah dibuat melingkar.
Dengan demikian, dengan kata lain, daftar tertaut dapat menjadi contoh utama untuk menambahkan tingkat tipuan lain untuk menyelesaikan masalah, karena Anda melakukannya secara dinamis dengan setiap operasi push. :)