C语言小问题---指针相减

来源:百度知道 编辑:UC知道 时间:2024/06/15 11:32:31
#include <stdio.h>
void main()
{
int a[5]={10,20,30,40,50};
int *p,*q;
p=&a[0];
q=&a[2];
printf("%d,%d,%d,%d,q-p=%d\n",*p,*q,p,q,q-p);
}
得出结果是10,30,1245036,1245044,q-p=2
q-p又得2?

指针相减就是得出两个指针之间差距的元素个数
INT型占四个字节,所以a[0]和a[2]之间相差的地址为8

指针相减就是获得两个指针的位置差了几个元素啊

这个2是经过系统换算后的。表示两个指针的差距是两个int型空间

四字节一个存储单元所以
q-p=(1245044-1245036)/4=2