指標是 C 語言最強大也最具挑戰性的特性。記憶體中每個位元組有唯一編號稱位址,指標即儲存這個位址的變數。
比喻: 銀行帳號 = 指標,存摺金額 = 記憶體內容。&變數 取得變數位址,指標變數儲存該位址,透過 *指標 存取實際資料。
類型 *變數名;
int *p1; // 指向 int 的指標
float *p3; // 指向 float 的指標
char *p4; // 指向 char 的指標
* 表示這是指標,前面的類型指定它指向的資料類型。指標只能指向同類型變數。
指標只能儲存位址,不可直接指定數值。使用 & 取得變數位址:
int a, *p;
// 初始化寫法
int *p = &a;
// 分步寫法
p = &a;
錯誤寫法:p = 1000; 或 *p = &a;
& (取址):單目,右結合,取得變數位址。* (間接存取):單目,右結合,取得指標指向的變數值。* 是型別標示,運算式中的 * 是運算子。int a = 5, *p = &a;
printf("%d", *p); // 輸出 5