一 :取地址運算“&”與取內容運算“*”:
單目運算“&”是取操作對象的地址 , “*”是取指標指向的對象的內容 , 兩者互為逆運算
int x , *p ;
p = &x ;
&(*p) = p 表示指標 ; *(&x)= x 表示變數x .
二 :指標的算術運算 :
指標的運算與其基底類型有關 , 一般的,如果p是一個指標 ,n是一個正整數 ,則對指標 p 進行 +(-)操作後的實際地址是 :
p +(-)n*sizeof(基底類型)
char *p ;
int *q ;
float *tk ;
//假設當前地址為 : p = 2110H , q = 2231H , tk = 2478H
p += 1 ; // p = p + 1 = 2111H
q += 4 ; // q = q + 4*4 = 2239H
tk -= 3 ; // tk = tk -3*8 = 246CH
三 : 指標自加 ,自減運算 :
指標的自加 ,自減運算也是地址運算
m = * p ++ 等價於 m = *(p ++)
取指標 p 當前所指變數的值賦給變數 m ; p 做加 1 運算 , 指向下一個目標變數 .
m = * ++ p 等價於 m = * ( ++ p)
p 做加 1 運算 , 指向下一個目標變數 ; 取指標 p 當前所指變數的值賦給變數 m .
m = (*p)++ 與 m = ++(*p)
前者是將指標 p 所指的變數的值賦給變數 m , 然後變數 *p 自加 1 ;
後者是將指標 p 所指的變數 *p 的值自加 1 後賦給變數 m .
四 :指標間的減法運算 :
指向同一群組類型相同資料的指標之間可以進行減法運算 , 相減的結果表示兩指標間相距的資料的個數 .
五 :指標的關係運算 :
p , q 指向同一個數組 , p > q 表示p 是否指向 q 所指位置的後面 , 若成立 則 運算式的值為 非 0 , 否則為 0 .
六 :指標的下標運算 :
p[i] = *(p + i) ;