【C语言】两个指针(地址)相减 两个指针相减,为两个指针之间间隔这两个指针类型的数目。 如:int *p,*q; p-q=(p地址-q地址)/sizeof(int) #include <stdio.h>intmain() {inta[9]={1,2,3,4,5,6,7,8,9};char*p,*q;int*p2,*q2; p=(char*)a; q=(char*)&a[2]; printf("p=%08X q=%...
C语言中两个地址相减指的是两个地址间数组元素的个数,而不是间隔的字节数。比如 int a[10],*p;p=a;a[1]-a[0] 值为1,而不是4 p+4 指的是p指针所指单元的后面第4个元素,即a[4],而不是a[1]。
【C语⾔】两个指针(地址)相减两个指针相减,为两个指针之间间隔这两个指针类型的数⽬。如:int *p,*q;p-q=(p地址-q地址)/sizeof(int)#include <stdio.h> int main(){ int a[9]={1,2,3,4,5,6,7,8,9};char *p,*q;int *p2,*q2;p=(char*)a;q=(char*)&a[2];printf("p=...
C语言的地址是可以进行加减运算的,只是他的加减,并不是单纯的数学运算的加减,地址只能加减偏移量,而...
p 指向了A[0],那么*p就和A[0]是同一个东西。当P++的时候,P向后移动了一格,也就是和A[1]一样了 也就是说这是用指针遍历数组的方式,和你在循环里把P换成int i=0,i<12I++ 然后用A[i]是一样的
指针之间相减 int *p1,*p2; p2=p1+4; 不难想到 p2-p1==4 可知指针相减得到的值是两个地址相减再除sizeof(int),这里的int也可以是其他数据类型。 指针递增(递减) int *p,x; 注意区分以下几组表达式 x=*p++; 即x=*p;p=p+1; x=*++p; 即x=*(p+1);p=p+1; ...
地址相减,是两个无符号整型数相减,输出 可以 用 16 进制或 10 进制。例如:unsigned mag_buf[4];mag_buf[2]=0x02b02c60;//地址1 mag_buf[1]=0x02b01650;//地址2 printf("%u %x\n",mag_buf[2]-mag_buf[1],mag_buf[2]-mag_buf[1]);10 进制 5648 16 进制 1610 ...
老哥们,为啥两相邻d..指针运算嘛,你的第三个printf里面有&a[1]-&a[0],但是a是个数组名,数组名在表达式里面被编译器换成了指向数组第一个元素的指针,并且[]符号引入了解除引用操作,所以就相当于
可以啊 不仅可以比较大小 有时候还可以两个地址相减 比如 int a[10];int *p1=&a[3];p1-a=3
; printf("%d\n", c-b);把 a[0] , a[1] 的地址强制另存为整数,然后相减,即可。