C中的数组地址减法

时间:2012-04-01 10:33:28

标签: c arrays pointers

  

可能重复:
  Pointer Arithmetic In C

代码:

int main() 
{ 
    int a[ ] ={0,1,2,3,4}; 
    char c[ ] = {'s','a','n','j','u'}; 
    printf("%d\n",&a[3]-&a[0]); 
    printf("%d\n",&c[3]-&c[0]); 
    return 0; 
}

为什么两者的输出都是3 3,如果我们考虑地址的差异,两者都会有所不同?

1 个答案:

答案 0 :(得分:3)

在指针算术中,减法不是以字节为单位返回差异,而是在两个指针之间的指针类型中返回。

因此,inta[3]之间a[0]的差异与char与{{1}之间c[3]的差异相同 - 两者都得到相同的结果。

用于指针减法运算的算术类似于:

c[0]