指針變量能否做加、減法 、比較大小?答案,是可以的。但又與普通變量做加減法運算有區別:

 

指針變量是有加減運算的,但是要注意以下幾點

 

1.       指針變量中存放的是地址值,也就是一個數字地址,例如某指針變量中的值是0x2000 0000,表示表示此指針變量存放的是內存中位於0x20000000地方的內存地址。指針變量可以加減,但是隻能與整型數據加減,此時加減的含義並不是其地址值進行了加減,也就是說如果指針變量p的值是0x20000000,那麼p=p+2;的值並不是0x2000 0002,並不是地址值的簡單相加減,那麼地址值加減多少是與指針指向的數據類型相關聯的:如果在64位的操作系統,p是指向整型數據的指針變量,那麼p=p+2之後,p的存儲的地址值變成0x2000 0008;同理,如果在32位的操作系統上,p是指向整型數據的指針變量,那麼p=p+2之後,p的存儲的地址值變成0x20000008也就說實際上地址值加了sizeof(int)*2這麼多。說明白點,我們加減的數字是以指針指向的數據類型爲量度的,p+2表示p在內存中前移兩個int的距離,如果p不是int類型,而是其他類型道理也是一樣。同樣指針與整型數據相減也是同樣的道理。

 

2.       指針之間可以相減,但不可以相加:兩個同一類型的指針變量是可以相減的,他們的意義表示兩個指針指向的內存位置之間相隔多少個元素(注意是元素,並不是字節數),例如對於int類型的指針pp1.p1-p的意義表示他們之間相隔多少個int類型的元素。同樣對於其他類型的指針變量之間相減的意義也是一樣。指針變量的自加和自減實際上是與整數1的加減運算。

 

3.        指針之間可以比較大小。但是同樣也限於兩個相同類型的指針變量,不同類型的指針變量之間比較大小沒有任何意義。指針之間的大小比較的意義,表示在內存中他們指向的位置的高低關係。

發佈了34 篇原創文章 · 獲贊 12 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章