#include<stdio.h>
int main()
{
int i=10,j=20,diff;
diff=&j-&i;
printf("\nAddress of i=%u Address of j=%u",&i,&j);
printf("\nDifference of address i and j is %d\n",diff);
return 0;
}
Вывод, который я получил:
Address of i=3012788 Address of j=3012776
Difference of address i and j is -3
Но разница между адресами здесь составляет 2.
Когда я делаю diff=&i-&j
, я получаю следующий вывод:
Address of i=2751740 Address of j=2751728
Difference of address i and j is 3
Но разница здесь между адресами составляет 12.
Когда объявляются две целочисленные переменные, необязательно, чтобы вторая переменная занимала следующие четыре байта адреса, занятого первой переменной. Но почему различия на самом деле не такие, какими они должны быть?