MIT の Introduction to C++ を読んでいたところ、コード例の 1 つが次のように示されていました。
int *getPtrToFive() {
int *x = new int;
*x = 5;
return x;
}
int main() {
int *p;
for (int i = 0; i < 3; ++i) {
p = getPtrToFive();
cout << *p << endl;
delete p;
}
}
ループが開始される前に「p」が一度宣言され、「new」を使用して割り当てられなかったにもかかわらず、繰り返しごとに「p」を削除できるのはなぜだろうかと思っていました。
別の質問は、関数で "*x" に値 5 が割り当てられた場合です。これはポインタであるため、メモリ アドレスが正しく変更されるのでしょうか。つまり、実際の値 5 ではなく 0x00005 のようなものでしょうか?