0
int a[ ] ={1,3,5,7,9,11,13,15,17,19};
int *pa = &a[4],*pb = &a[1];
pa-pb
的值是多少?答案:3,但是如何?不應該是12(就像我打印pa
和pb
也是,要仔細檢查,並得到12)?C指針減法運算
int a[ ] ={1,3,5,7,9,11,13,15,17,19};
int *pa = &a[4],*pb = &a[1];
pa-pb
的值是多少?答案:3,但是如何?不應該是12(就像我打印pa
和pb
也是,要仔細檢查,並得到12)?C指針減法運算
指針算術與正常算術有很大不同。在指針運算a-1
中,其中a
是指針,並不意味着a
的值減1,這意味着返回一個單位的內存。
在你的例子中,pa-pb
並不意味着值爲pa-pb
。一個int變量需要4個字節,所以pa-pb
表示由三個int返回從pa
到pb
。
對於int
一個單位的內存是4個字節,float 8個字節,字符1個字節。 注意:這些值從系統到系統,其通常是這些值的變化。
它的一個int所以除以4,好吧。謝謝! – user7703770