Consider the following programm,
#include<stdio.h>
int main()
{
int marks[]={20,65,45,68,89};
int *x,*y;
x=&marks[2];
y=&marks[4];
printf("%p\n%p\n"x,y);
printf("%p\n%p\n",y-x,*y-*x);
return 0;
}
When I want to print out the value of y-x, the console should give me a output equal to the difference between the addresses of the corresponding pointers. After all, we know that x and y are having addresses (‘some integer value’). However it is not so. Why?
… and it does. For me, it outputs
2. If you compare the addresses, you see that they are separated by 8 bytes, which is 2ints, which is the answer you sought.