在C語言程式設計中,結構體與指標是構建複雜數據結構的基石。本文將系統梳理這兩大核心概念,並結合鏈表、二叉樹等經典數據結構,說明它們的混合應用模式。
sizeof 是編譯期運算元,而非函數,用於獲取類型或變數佔用的位元組數。例如 sizeof(int) 在 64 位系統中通常返回 4。
#define 用於定義常數或類函數巨集,如 #define MAXN 100 或 #define max(x,y) ((x)>(y)?(x):(y)),預處理階段進行文字替換。
typedef 為現有類型創建別名,例如 typedef int ElemType;,便於在數據結構中統一修改元素類型,提高代碼可移植性。
C 語言提供基本類型,但實際問題常需組合不同類型數據。結構體允許將不同類型的變數封裝為一個新類型:
typedef struct {
int id;
char grade;
float score;
} Student;
使用方式:
Student s1;
s1.id = 1001;
s1.grade = 'A';
s1.score = 92.5;
// 結構體陣列
Student class[30];
class[0].id = 1002;
指標變數儲存記憶體地址,通過解引用操作間接訪問數據:
int num = 10;
int *ptr = # // 取地址
printf("%d", *ptr); // 解引用獲取值
指標類型必須與目標變數類型匹配,如 Student *pstu 指向結構體變數。
結構體中包含指向自身類型的指標,是動態數據結構的關鍵:
// 單向鏈表節點
typedef struct Node {
int data;
struct Node *next;
} Node;
// 二叉樹節點
typedef struct BTNode {
int data;
struct BTNode *lchild, *rchild;
} BTNode;
typedef struct BTNode *BTPtr;
BTPtr root; // 等價於 struct BTNode *root;
node.data = 10;ptr->data = 10; (等價於 (*ptr).data)這種結構體+指標模式廣泛應用於:
掌握結構體與指標的靈活組合,是從 C 語言初學者進階為系統程式設計師的關鍵一步。