Menu
Coddy logo textTech

間接参照演算子

CoddyのC++ジャーニー「論理と制御フロー」セクションの一部 — レッスン 3/56。

変数の pointer を取得できるようになったので、次はそのメモリ address にある値を参照・変更する方法を学ぶ必要があります。ここで重要な役割を果たすのが dereference 演算子(*)です。間接参照演算子(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 演算子を使用することでも originalvariable を変更できます。*ptr に新しい値を代入すると、そのメモリ位置に格納されている値が実際に変更されます:
*ptr = 100;  // numberを100に変更する
// numberは現在100です。ptrを通じて変更したにもかかわらず
この間接的なアクセスこそがポインタを強力にしている理由です。`pointer`さえあれば、プログラムのどこからでも`variable`を`Read`したり変更したりすることができます。
challenge icon

チャレンジ

簡単

ポインタ経由で変数の値を変更することにより、間接参照演算子(dereference オペレータ)の動作を確認するプログラムを作成してください。

以下の input が与えられます:

  • variable の初期値を表す 1 つの整数
  • pointer を介して割り当てる新しい値を表す 1 つの整数

プログラムの要件:

  1. temperature という名前の整数型 variableDeclare し、最初の input 値で initialize します
  2. temperature variable を指す(pointingtempPtr という名前の pointerCreate します
  3. pointerdereference して Original の値を Print します
  4. dereference 演算子を使用し、pointer を通じて(throughtemperature の値を 2 番目の input 値に変更(Change)します
  5. 再度 pointerdereference して新しい値を 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;
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

論理と制御フローのすべてのレッスン