struct node {
int a;
float b;
struct node *next; // 指標:固定大小 4/8 位元組
} s;
struct node {
int a;
float b;
struct node next; // 錯誤:無限遞迴定義
} s;
struct node *next:指標大小固定(32 位元 4 bytes,64 位元 8 bytes),編譯器可立即決定struct node next:需知 struct node 完整大小,但此時結構體尚未定義完成 → 無限遞迴struct node {
struct unknown *next; // 正確:unknown 未定義也無妨
};
指標大小與指向類型無關,編譯器只需預留指標空間。
struct ListNode {
int data;
struct ListNode *next; // 唯一正確方式
};
此模式廣泛用於鏈結串列、樹、圖等動態資料結構。