ポインタがaの場合、a
と&a
の違いを理解しようとしています。次のコード例では a、&a、* aの違いは何ですか?
int main()
{
int b = 100;
int *a;
a = &b;
printf("%d %d %d", a , &a , *a);
return 0;
}
は、私の理解によると、のアドレスに与えられた名前です。それは次のとおりです。a
がポインタであるとき
は、したがって、私は同じになるようにa
と&a
を期待しています。しかし、出力では、私は最初の2つの値(a
と&a
)を別として取得しています。
どこが間違っていますか?
*私の理解によれば、「a」は「a」のアドレスに付けられた名前です。*これは誤解です。 'a'は特定のアドレスにある値を表す名前です。だから、 'a'を使って値にアクセスします。 '&a'を使って、' a'で表される値のアドレスにアクセスします。そして、 '* a'はそれ自身がアドレスであると仮定し、' * a'はそのアドレスの値を参照します。 – lurker