對兩個毫無關聯的指標比較大小是沒有意義的,因為指標只代表了「位置」這麼乙個資訊,但是,如果兩個指標所指向的元素位於同乙個陣列(或同一塊動態申請的記憶體中),指標的大小比較反映了元素在陣列中的先後關係。
若有p=a(p指向陣列a),則:
p++(或p+=1),表示p指向下一元素。
*p++與*(p++)等價。同樣優先順序,結合方向為自右向左。
*(p++) 與*(++p)。
前者是先取*p的值,後使p值加1,相當於a[i++];後者是先使p加1,再取*p,相當於a[++i]。
(*p)++表示p所指向的元素值加1,而非指標值加1。
指標變數所支援的另一種運算方式是兩個同型別指標相減,返回值是個有符號整數
舉例來說,指標p1指向arr[i],指標p2指向arr[j],那麼p1-p2=i-j,兩個指標的距離並不是其值簡單做差,還要除以「指標所指型別占用的記憶體位元組數」。
指標相減多應用於同一塊記憶體(如陣列,或一塊動態申請的記憶體)中,如果兩個指標所指向的元素沒有結構上的關係,指標相減的結果將是不可**的,打個比方來說,對一條街上的兩個門牌,相減大致可以判斷出中間隔了多少間房子,而在不同街道甚至是不同城市的門牌作差,是沒有什麼實際意義的。
C語言學習筆記 指標
若觸過組合語言,那麼理解學習c語言中指標就很簡單了。指標,在彙編裡面的表現形式,無非就是定址,直接定址和間接定址。先來學習下,c語言中的4大類資料型別 基本型別 int,long,float,char 構造型別 陣列,結構體 struct,聯合體 union,列舉型別 enum 指標型別 int l...
C語言學習筆記 指標
c語言要玩的好,指標是核心,但是指標在學習的時候看教程往往感覺一看就明白,但是實際用的時候一用就錯,而且還不知道錯在哪。為了更加深刻的了解指標,將學習過程記錄下來,依次加深對指標的理解。先看看一段測試 void fun void int main void 定義乙個變數a,值為100,然後定義乙個一...
C語言學習筆記 指標
get新知識 1 指向二維陣列的指標,如指向int a 3 4 的指標int p 4 p指的是第0行第乙個位址 注意是位址 p 1 指的是第1行第乙個位址,以此類推 p i j 表示第i行第j列的元素。二維陣列本質也是一維陣列。每一行相當於乙個元素。2 指向函式的指標 作用 可以作為另乙個函式的引數...