値がアドレスに格納されている場合、この宣言は何をしますか
int a = 10;
値を a または &a のアドレスに格納します。そして、値を a のアドレスに格納する場合、次のようにこの変数への間接化を使用できない理由は次のとおりです。
printf("%d", *a);
そうでない場合、各値には一意のアドレスがあり、間接演算子を使用してそれらにアクセスできるとどのように言えますか。
編集:間接参照がポインターでのみ使用されていると思われる場合は、次のことを考慮してください。
int b[10];
b[0] = 4; // Give it some value
これで、b[0] はスカラー量であり、スカラー値が必要な場所ならどこでも使用できることがわかりました。しかし、この場合、次のように間接化を使用できます。
printf("%d", *b); // print 4
このスカラー変数でポインターを使用できることは興味深いことではありませんが、配列なしで変数宣言を使用することはできません。
私の意見では、コンパイラは次のように変数宣言の間接化を自動的に生成します。
int a = 4;
したがって、変数が次のように宣言されている場合を除いて、正当ではない別の間接化を設定しているため、これに対して間接化は不可能です。
int a = 4;
int *b = &a;
int **c = &b;
編集 2:scanf("%d", &a)
値を a ではなく a のアドレスに格納するという証明として取ることができます。