int *pa = &a;pa = &a;pb = pa;pa = a; 或 pa = &a[0];char *pc = "C Language";(存入的是字符數組首地址,非整個字符串)int (*pf)(); pf = f;僅適用於指向數組的指針:
pa + n / pa - n:向前/後移動 n 個元素位置pa++ / ++pa / pa-- / --pa:移動一個元素位置關鍵點:移動步長 = 元素類型大小(字節數),非單純地址 +1。指向非數組類型的指針加減無意義。
同一數組的兩指針相減 → 元素個數差(地址差 ÷ 元素大小)。例:float *pf1=2010H, *pf2=2000H,元素 4 字節 → pf1-pf2 = 4。指針相加無意義。
>、<、==,反映元素位置高低p==0 為空指針,p!=0 非空空指針通過賦 0 獲得:#define NULL 0; int *p = NULL;。未賦值指針含隨機值,使用會導致錯誤;賦 0 後可安全使用(僅不指向具體變量)。
int main() {
int a, b, c, *pmax, *pmin;
scanf("%d%d%d", &a, &b, &c);
if (a > b) { pmax = &a; pmin = &b; }
else { pmax = &b; pmin = &a; }
if (c > *pmax) pmax = &c;
if (c < *pmin) pmin = &c;
printf("max=%d\nmin=%d\n", *pmax, *pmin);
return 0;
}
int main() {
int a=10, b=20, s, t, *pa=&a, *pb=&b;
s = *pa + *pb; // a+b
t = *pa * *pb; // a*b
printf("a=%d\nb=%d\na+b=%d\na*b=%d\n", a, b, a+b, a*b);
printf("s=%d\nt=%d\n", s, t);
return 0;
}
指針運算是C語言高效操作內存的核心。掌握賦值規則、算術移動語義、比較邏輯及空指針處理,能避免常見陷阱,編寫健壯代碼。