int* PtrA; // assigned memory address 100
int a = 1; // assigned memory address 600
What is the memory address of ptrA + 2?
質問があいまいです。
質問が「(ptrA のメモリ アドレス) + 2 とptrA
は?」である場合、メモリ アドレス 100 (PtrA != ptrA を無視) にあり、C および C++ でポインターに 2 を追加すると、指す型のサイズの倍数なので、int
が 32 ビットの場合、最終結果は 100 + 2 * 4 = 108 になります。
質問が「(ptrA + 2) のメモリ アドレスは何ですか?」、つまり、ptrA 変数と 2 の値を加算した結果である場合、それは未定義ですptrA
。初期化されていないメモリから読み取ります。
あなたの期待と想定される答えは、意図したコードが...
ptrA = &a;
...ptrA + 2
評価される前のいつか。それが本当なら、答えは で600 + 2 * sizeof(int)
、608 である可能性が非常に高いです。