C語言中指針變量的加減運算


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

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

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

 

參考:https://zhidao.baidu.com/question/197589503.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM