-1
こんにちは私はCで構造体とポインタについて学習していました。ここで私が& tmp.z - 8を印刷しているとき、値はIamが型キャスティングして(char * & tmp.z-8)。私は型キャスティングとポインターに関するいくつかの記事を読んだが、良い理由を見つけることができなかった。値が型キャストされたときにアドレス値が異なる
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;
}
Googleの「ポインタ演算」またはCブックで読むことができます。多分ここで見つけられるいくつかの有益な情報:http://stackoverflow.com/questions/394767/pointer-arithmetic – Lundin