指標允許的運算方式有:
(1). 指標在一定條件下,可進行比較,這裡所說的一定條件, 是指兩個指標指向同乙個物件才有意義, 例如兩個指標變數p, q指向同一陣列, 則<, >, >=,<=, ==等關係運算子都能正常進行。若p==q為真, 則表示p, q指向陣列的同一元素; 若p(3). 兩個指標變數在一定條件下,可進行減法運算。設p, q指向同一陣列,則p-q的絕對值表示p所指物件與q所指物件之間的元素個數。其相減的結果遵守物件型別的位元組長度進行縮小的規則。
#include
int main()
運算結果:
p = 1245044
q = 1245052
q - p = 2
a[q-p] = 2
press any key to continue
按理說q - p應該等於8,下面的a[q - p]為a[8], 但是運算結果卻是2.這就用到第三條所講的,p-q的絕對值表示p所指物件與q所指物件之間的元素個數。其相減的結果遵守物件型別的位元組長度進行縮小的規則。
我們也可以看成p, q是陣列的相對位址,這樣容易理解些。就像 *(p + n)是訪問的第n- 1個元素一樣,並不考慮p所指向的元素型別所佔記憶體的大小。即上面所說的放大因子。
指標與指標位址
int urn size urn 0 100 urn 1 200 urn 2 300 urn 3 400 urn 4 500 int ptr1,ptr2,ptr3 ptr1 urn ptr2 urn 2 printf 當前指標的值和位址 printf ptr1 p,ptr1 d,ptr1 p n p...
指標 陣列 位址
指標跟位址概念的不同,指標是一種位址變數,通常也叫指標變數,統稱指標。而位址則是位址變數的值。實際上,位址這個東西,本來就是一種基本資料型別,本應該在介紹整數 浮點 字元等基本型別的時候把位址顯式地放在一起討論,這樣在後面介紹指標與陣列的時候就能避免許多誤解。可惜不少教材或者根本沒有談及,或者就算提...
指標與位址
1.include int main int argc,const char argv 這是乙個指標陣列,裡面所有的元素都是指標,但這裡的指標是乙個位址常量,比如 aaaaa 本身就是乙個位址 直接使用 p,就可以列印出這一固定的位址值。printf p p n aaaaa bbbbb printf...