与えられた:
int **a; // (double pointer)
int *b;  //  (pointer)
と の間に違いは*a=bありa=&bますか?
1 つ目は、変数の値をポイント先の場所に*a = b;コピーします。ba
2 番目は、 のアドレスを にコピーa = &bします。ba
*a = b;
指しているb場所に値を割り当てています。a
a = &b;
ここでは のアドレスを割り当てていbますa
*a = bが指しているbメモリ内の場所への割り当てa
a = &bのアドレスをb変数に割り当てますa。
&変数のアドレスを取得するのは演算子です
*ポインターが指す値を取得できる演算子であり、このプロセスを呼び出す必要がある間接化です。
はい、この2つのステートメントは異なります。
ここでの問題は、実際にはこの 2 つの違いは何かということだと思います。次の例は、これを示しています。
int x = 10;
int *y;
int *z;
y = &x;
*z = x;
printf("x: %d, *y: %d, *z: %d\n", x, *y, *z);
x = 20;
printf("x: %d, *y: %d, *z: %d\n", x, *y, *z);
z が指す値は 20 の新しい x 値に更新されませんが、y が指す値は更新されます。