Hi I was learning about structs and pointers in C. Here when I am printing &tmp.z - 8 the value is different from when Iam typecasting it and printing (char *)&tmp.z - 8). I went through few articles about typecasting and pointers, but couldnt find a good reason, can anyone help me on this.?
struct xyz
{
int x;
char y;
double z;
}tmp;
int main()
{
printf("%p\n",&tmp.z - 8);
printf("%p\n",(char *)&tmp.z - 8);
return 0;
}