【C语言】两个指针(地址)相减 5 1112 13 两个指针相减,为两个指针之间间隔这两个指针类型的数目。 如: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("...
C语言中两个地址相减指的是两个地址间数组元素的个数,而不是间隔的字节数。比如 int a[10],*p;p=a;a[1]-a[0] 值为1,而不是4 p+4 指的是p指针所指单元的后面第4个元素,即a[4],而不是a[1]。
p 指向了A[0],那么*p就和A[0]是同一个东西。当P++的时候,P向后移动了一格,也就是和A[1]一样了 也就是说这是用指针遍历数组的方式,和你在循环里把P换成int i=0,i<12I++ 然后用A[i]是一样的
这个差异是因为在c语言标准中,加法与减法运算对于地址的操作和对于值的操作是不同的。 当一个加法运算,加号两边的操作数一个是指针,另一个是一个整数时,这个整数值先乘以指针指向的数据类型的大小(如sizeof(int)),然后再和指针的值相加。 当一个减法运算,减号左边的操作数是一个指针,右边的操作数是一个整数时...
c语言大佬来救我 宇文nick 彩虹面包 13 差1个double 1double==8bytes livemor 便当 3 强转void*试试 剑凌天 毛蛋 1 T*的差值是差了几个sizeof(T),连续的两个什么指针都是差1。直接乘sizeof(double)就是byte差了 -超星学习通- 低能力者 5 指针运算嘛,你的第三个printf里面有&a[1]-&a[...
剑倾城3 强能力者 7 为什么不是整型变量所占字节数?? () 打赏 ebhrz 团子家族 10 你确定那是地址而不是指针? XKD__二毛 大能力者 8 指针存放地址 谢应宸 低能力者 5 存在一个隐式类型转换 结果是1*sizeof(int*) 登录百度帐号 我的游戏 推荐游戏 登录后查看最近玩过的游戏 游戏中心游...