2017-04-08 74 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