| 運算符 | 名稱 | 功能 | 範例 |
|---|---|---|---|
& | 取址運算符 | 取得變數記憶體位址 | &a 為變數 a 的位址 |
* | 間接運算符/指標運算符 | 存取指標指向的變數值 | *ptr 為 ptr 指向的變數 |
int main() {
int *p1, *p2, a, b, t;
scanf("%d,%d", &a, &b);
p1 = &a; p2 = &b;
if (*p1 < *p2) { // 比較所指值
t = *p1; // 交換所指變數的值
*p1 = *p2;
*p2 = t;
}
printf("%d,%d\n", a, b);
return 0;
}
輸入 3,4 → 輸出 4,3。指標始終指向原變數,修改的是變數值。
int main() {
int *p1, *p2, a, b, *t;
scanf("%d,%d", &a, &b);
p1 = &a; p2 = &b;
if (*p1 < *p2) {
t = p1; // 交換指標本身
p1 = p2;
p2 = t;
}
printf("%d,%d\n", *p1, *p2); // 輸出所指值
return 0;
}
結果相同,但記憶體中資料未移動,只是 p1 指向 b,p2 指向 a。此法在大數據結構排序時極高效(只動指標,不動資料)。
當 p = &a 成立時:
p 等價於 &a*p 等價於 a此時可用指標形式完整替代直接變數操作。