2017-04-08 82 views
0
int a[ ] ={1,3,5,7,9,11,13,15,17,19}; 
    int *pa = &a[4],*pb = &a[1]; 

pa-pb的值是多少?答案:3,但是如何?不應該是12(就像我打印papb也是,要仔細檢查,並得到12)?C指針減法運算

回答

1

指針算術與正常算術有很大不同。在指針運算a-1中,其中a是指針,並不意味着a的值減1,這意味着返回一個單位的內存。

在你的例子中,pa-pb並不意味着值爲pa-pb。一個int變量需要4個字節,所以pa-pb表示由三個int返回從papb

對於int一個單位的內存是4個字節,float 8個字節,字符1個字節。 注意:這些值從系統到系統,其通常是這些值的變化。

+0

它的一個int所以除以4,好吧。謝謝! – user7703770