私は私が画面上に印刷されたそれぞれの値は、次のコードで何を意味するかを理解する必要があるC.に初心者だ:Cポインタの "**&ptr"と "2 ** ptr"の意味は?
#include<stdio.h>
int main()
{
int x = 10;
int *ptr = &x;
printf("%d %d %d\n", *ptr,**&ptr, 2**ptr);
return 0;
}
出力(GCC):ここで
10 10 20
私は変数x
とptr
がx
の変数を指していると宣言しました。したがって、*ptr
の印刷値はx
です。しかし、私は**&ptr
と2**ptr
の値を理解できませんでした。
ありがとうございます。
最初の10はptrの内容です(そしてptrはxのadrです)ので、xの内容です... 2番目のあなたはptrのadrを取得します、* =あなたは取得しますその内容、* =あなたはまたxであるptrの内容をもう一度得る。最後に* ptrに2を掛け、* ptrにxの内容をもう一度書きます。 –
'* ptr'が何であるか分かっているなら、おそらく' 2 * * ptr'は分かりやすい形式であると理解できます。 – Ryan
これらの読み取り値が有用であることがわかります[ポインタの逆参照とはどういう意味ですか?](https://stackoverflow.com/questions/4955198/what-does-dereferencing-a-pointer -mean)と[参照の意味と参照解除](https://stackoverflow.com/questions/14224831/meaning-of-referencing-and-dereferencing) –