1.不同型別的指標之間的運算沒有意義。
對於相同資料型別的指標來說,一方面是與數字的加減,一方面是指標間的加減:
2.指標變數中存放的是位址值,也就是乙個數字位址,例如
某指標變數中的值是
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型別的指標p和
p1。p1-p
的意義表示他們之間相隔多少個
int型別的元素。
3. 指標之間可以比較大小。但是同樣也限於兩個相同型別的指標變數,不同型別的指標變數之間比較大小沒有任何意義。指標之間的大小比較的意義,表示在記憶體中他們指向的位置的高低關係。
C語言指標
指標變數是包含記憶體位址的變數,它指向記憶體中的一塊區域,通過指標的值,可以間接訪問到相應的記憶體單元的資料,並做相應的修改。1 指標的定義和簡單使用 定義乙個指標變數和定義一般的變數類似,只需在變數名前面加乙個 對乙個指標變數賦值可以用取位址符 來獲取到乙個變數的位址,如果要獲得指標指向的記憶體區...
C語言指標
1 定義指標變數void change int n 格式 變數型別 變數名 定義了乙個指標變數p 指標變數只能儲存位址 指標變數p前面的int 指標變數p只能指向int型別的資料 int main void change int n 2 指標與陣列 陣列名其實質是乙個指標,但是它和普通的指標變數還是...
c語言指標
編寫程式,在主函式裡用指標陣列輸入六個字串,再用另乙個函式對這六個字串排序,並在主函式中輸出排好序的字串。include void sort char s,int n char temp for int i 0 ifor int j 0 jif strcmp s j s j 1 0 temp s j...