一.指针相减
1.两个指针相减,说明有符号。先用两个目标数减,再除以,去掉变量名,去掉一个*数字,除以多少
int fun() { short*p; short*p1; short a; short b; p=&a; p1=&b; if(p-p1) { a ; } return 0; }
上面的代码汇编如下图所示

如图所示,sub先减 sar右移,相当于除以.
2.只有相同类型的指针才能减少
如图所示,不同类型不能相减
二.指针比大小
指针比大小时无符号
int fun() { short*p; short*p1; short a; short b; p=&a; p1=&b; if(p>p1) {a ; } return 0; }
上述代码反汇编如下图所示:
jbe,无符号小于等于,代表指针比大小时无符号
三.数组指针的针
int fun() { int*p; int a[5]; int b; a[0]=1; a[1]=2; a[2]=3; a[3]=4; a[4]=5; p=a; /*b=*(p 0);*///p[0] b=p[4]; return 0; }
int fun() { int*p; int a[5]; int i; for (i=0;i<5;i ) { a[i]=i; } p=a; for (i=0;i<5;i ) { printf("%d\n",p[i]); } return 0; }
上述一维数组转换相对简单,p=a解释一下,其他的都很简单,p=a数组的变量名是数组的地址,也可以写成这样,p=&a[0]
今天的文章到此为止。如果你什么都不懂,欢迎和我交流。我一定知道一切。这篇文章也付出了一定的努力。喜欢的朋友可以表扬和关注。非常感谢!