##
最近学习指针时,有一道练习题如下,可以加深自己对指针的理解和使用。
#include <stdio.h>
int main()
{
int a[] = {1,2,3,4};
int *p1 = a;
int *p2 = &a[3];
printf("%d\n",p2-p1);
return 0;
}
问:p2-p1=?
这里我们要注意的是:指针相减 =相差的位数 = 字节/步长
上面的程序中,int为4个字节,步长为4,p2与p1总共相差12个字节
12 / 4 = 3
结果应为3
运行如下:
[Jim@localhost ~]$ gcc pointer.c -o pointer
[Jim@localhost ~]$ ./pointer
3
[Jim@localhost ~]$