間接参照演算子
CoddyのC++ジャーニー「論理と制御フロー」セクションの一部 — レッスン 3/56。
変数の pointer を取得できるようになったので、次はそのメモリ address にある値を参照・変更する方法を学ぶ必要があります。ここで重要な役割を果たすのが dereference 演算子(ポインタを経由して、この間接的なアクセスこそがポインタを強力にしている理由です。`pointer`さえあれば、プログラムのどこからでも`variable`を`Read`したり変更したりすることができます。
*)です。間接参照演算子(dereference operator)* は、pointer が pointing しているメモリ address に格納されている値にアクセスするために使用されます。pointer 変数の前に * を置くと、その address を「たどり」、そこに実際に格納されている値を返します。アドレス演算子(&)は変数のメモリ`address`を取得するために使用され、`dereference`演算子(*)はその`address`にある値にアクセスするために使用されることを思い dry 出してください。int number = 42;
int* ptr = &number; // ptrはnumberのアドレスを格納する
int value = *ptr; // valueには今42が入っているdereference 演算子を使用することでも original な variable を変更できます。*ptr に新しい値を代入すると、そのメモリ位置に格納されている値が実際に変更されます:*ptr = 100; // numberを100に変更する
// numberは現在100です。ptrを通じて変更したにもかかわらずチャレンジ
簡単ポインタ経由で変数の値を変更することにより、間接参照演算子(dereference オペレータ)の動作を確認するプログラムを作成してください。
以下の input が与えられます:
variableの初期値を表す 1 つの整数pointerを介して割り当てる新しい値を表す 1 つの整数
プログラムの要件:
temperatureという名前の整数型variableをDeclareし、最初のinput値でinitializeしますtemperaturevariableを指す(pointing)tempPtrという名前のpointerをCreateしますpointerをdereferenceしてOriginalの値をPrintしますdereference演算子を使用し、pointerを通じて(through)temperatureの値を 2 番目のinput値に変更(Change)します- 再度
pointerをdereferenceして新しい値をPrintします
以下の正確な出力フォーマットを使用してください:
Original value: [original value]
New value: [new value]自分で試してみよう
#include <iostream>
using namespace std;
int main() {
// 入力値を読み取る
int initialValue, newValue;
cin >> initialValue;
cin >> newValue;
// TODO: 以下にコードを書いてください
// 1. temperature変数を宣言し、initialValueで初期化する
// 2. temperatureを指すtempPtrポインタを作成する
// 3. Print original value using pointer dereference
// 4. ポインタ経由でnewValueを使ってtemperatureの値を変更する
// 5. ポインタのデリファレンスを使って新しい値を出力する
return 0;
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。