Pointers 给定两个变量,在计算机中查找它们的距离(以字节为单位)’;大脑(记忆)

Pointers 给定两个变量,在计算机中查找它们的距离(以字节为单位)’;大脑(记忆),pointers,Pointers,有人能解释一下下面的代码是如何计算内存中两个变量之间的字节距离的吗 #include<stdio.h> int main() { int a = 5; int b = 10; int difn = (int)(&b) - (int)(&a); if(difn < 0) difn *= -1; printf("Difference in bytes: %d\n", difn); re

有人能解释一下下面的代码是如何计算内存中两个变量之间的字节距离的吗

#include<stdio.h>

int main()
{
    int a = 5;
    int b = 10;
    int difn = (int)(&b) - (int)(&a);
   
    if(difn < 0) difn *= -1;

    printf("Difference in bytes: %d\n", difn);

    return 0;
}
#包括
int main()
{
INTA=5;
int b=10;
int-difn=(int)(&b)-(int)(&a);
如果(difn<0)difn*=-1;
printf(“字节差异:%d\n”,difn);
返回0;
}

&
操作员返回内存中的字节地址。因此,如果减去两个字节的地址,就得到了这些地址之间的字节差。因为这个差值可能是负数,所以需要检查它是否是负数,如果是,则将其乘以-1(绝对值)。然后你只需要把它打印出来。

intdifn=(int)(&b)-(int)(&a);在这里,如果我在两种情况下都删除int,结果是1,但如果我不删除,结果是4。int在这里扮演什么角色?您得到的结果取决于您使用的系统,例如,对于我
sizeof(int)=4
,其中
sizeof(int*)=8
,地址在内存中的大小与实际int不同,这就需要铸造