モジュールのレッスン (2/2)
ポインタ
ポインタは、C++ の最も強力かつ特徴的な機能の 1 つです。コンピュータの物理メモリに直接アクセスできるため、効率的なリソース管理と高いパフォーマンスが可能になります。
1. メモリとアドレスとは何ですか?
プログラム内で宣言したすべての変数は、RAM メモリのセルに保存されます。各セルには一意の メモリ アドレス (通常は 16 進数形式で表現されます。例: 0x7ffee3bf87ac) があります。
C++ では、address-of 演算子 & を使用して、任意の変数のメモリ アドレスを取得できます。
int x = 42;
std::cout << &x; // Prints the memory address of x (e.g., 0x7ffee3bf87ac)2. ポインタの定義
ポインタは、別の変数のメモリ アドレスをその値として格納する特別な変数です。
構文では、データ型の後にアスタリスク * を使用する必要があります。
int x = 42;
int* ptr = &x; // ptr is a pointer to an integer that contains the address of x3. 逆参照演算子 (*)
ポインターが指すアドレスに格納されている値にアクセスまたは変更するには、逆参照演算子 (または間接演算子) を使用します。これは、シンボル * でも表されます。
int x = 42;
int* ptr = &x;
std::cout << *ptr; // Prints 42 (the value ptr points to)
*ptr = 100; // Modifies the value of x through the pointer
std::cout << x; // Now prints 100!4. Null ポインター: nullptr
有効なアドレスを指していないポインターは、nullptr キーワード (C++11 で導入) を使用して初期化する必要があります。
int* ptr = nullptr; // Safe null pointer自分で試してみてください
main には、42 に初期化された整数変数の値があります。value のアドレスを指す整数 ptr へのポインタを宣言します。 ptr の逆参照を使用して value の値を 100 に設定し、最後に std::cout を使用して value を出力します。
ヒントを表示
`int* ptr = &value;` でポインタを宣言し、`*ptr = 100;` を逆参照して値を変更し、`std::cout << value;` を出力します。
3 回の試行後に解決策が利用可能になります
整数へのポインター (int* ptr) を受け入れ、それが指す値を 2 で乗算する関数 doubleValue を定義します (ポインターが null でない場合)。 main で、変数 num のアドレスを渡して doubleValue を呼び出し、それを出力します。
ヒントを表示
関数は `int* ptr`を受け入れる必要があります。内部では`*ptr = (_ptr) _ 2`を使用します。メインでは`doubleValue(#);` で呼び出します。
3 回の試行後に解決策が利用可能になります
提供されたコードを考慮すると、a の値を直接変更して 10 に設定できる式はどれですか?
int a = 5;
int* p = &a;
// quale istruzione assegna 10 ad a?