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