可能重复:
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,如果我们考虑地址的差异,两者都会有所不同?
答案 0 :(得分:3)
在指针算术中,减法不是以字节为单位返回差异,而是在两个指针之间的指针类型中返回。
因此,int
与a[3]
之间a[0]
的差异与char
与{{1}之间c[3]
的差异相同 - 两者都得到相同的结果。
用于指针减法运算的算术类似于:
c[0]