Trên thực tế, các chương trình C thường sử dụng cảm ứng con trỏ vô hạn. Một hoặc hai cấp độ tĩnh là phổ biến. Ba lần gián tiếp là hiếm. Nhưng vô hạn là rất phổ biến.
Tất nhiên, việc xác định con trỏ vô hạn đạt được với sự trợ giúp của một cấu trúc, tất nhiên, không phải với một công cụ khai báo trực tiếp, điều này là không thể. Và một cấu trúc là cần thiết để bạn có thể bao gồm các dữ liệu khác trong cấu trúc này ở các cấp độ khác nhau nơi điều này có thể chấm dứt.
struct list { struct list *next; ... };
bây giờ bạn có thể có list->next->next->next->...->next
. Đây thực sự chỉ là nhiều chỉ dẫn con trỏ : *(*(..(*(*(*list).next).next).next...).next).next
. Và .next
về cơ bản là noop khi nó là thành viên đầu tiên của cấu trúc, vì vậy chúng ta có thể tưởng tượng điều này là ***..***ptr
.
Thực sự không có giới hạn về điều này bởi vì các liên kết có thể được duyệt qua một vòng lặp chứ không phải là một biểu thức khổng lồ như thế này, và hơn nữa, cấu trúc có thể dễ dàng được tạo thành hình tròn.
Do đó, nói cách khác, các danh sách được liên kết có thể là ví dụ cuối cùng về việc thêm một mức độ gián tiếp khác để giải quyết vấn đề, vì bạn đang thực hiện nó một cách linh hoạt với mỗi thao tác đẩy. :)