ที่จริงแล้วโปรแกรม C มักใช้ประโยชน์จากการบอกทางแบบไม่สิ้นสุด ระดับคงที่หนึ่งหรือสองระดับเป็นเรื่องปกติ สามทิศทางเป็นของหายาก แต่ไม่มีที่สิ้นสุดเป็นเรื่องธรรมดามาก
การชี้ทางอ้อมแบบไม่สิ้นสุดนั้นทำได้ด้วยความช่วยเหลือของ struct ไม่ใช่จากตัวประกาศโดยตรงซึ่งจะเป็นไปไม่ได้ และจำเป็นต้องมีโครงสร้างเพื่อให้คุณสามารถรวมข้อมูลอื่น ๆ ในโครงสร้างนี้ในระดับที่แตกต่างกันซึ่งสิ่งนี้สามารถยกเลิกได้
struct list { struct list *next; ... };
list->next->next->next->...->next
ตอนนี้คุณสามารถมี นี่เป็นเพียงการชี้หลายทิศทาง: *(*(..(*(*(*list).next).next).next...).next).next
. และ.next
มันก็เป็นเสียงรบกวนเมื่อมันเป็นสมาชิกคนแรกของโครงสร้างดังนั้นเราจึงสามารถจินตนาการได้ว่าเป็น***..***ptr
เมื่อมันเป็นครั้งแรกที่สมาชิกของโครงสร้างเพื่อให้เราสามารถคิดนี้เป็น
ไม่มีข้อ จำกัด ใด ๆ ในเรื่องนี้เพราะการเชื่อมโยงสามารถข้ามผ่านวนซ้ำมากกว่าการแสดงออกแบบนี้และยิ่งกว่านั้นโครงสร้างสามารถทำให้เป็นวงกลมได้อย่างง่ายดาย
ดังนั้นในคำอื่น ๆ รายการที่เชื่อมโยงอาจเป็นตัวอย่างที่ดีที่สุดของการเพิ่มอีกระดับของการอ้อมในการแก้ปัญหาเนื่องจากคุณทำแบบไดนามิกกับการกดทุกครั้ง :)