アドレス演算子
CoddyのC++ジャーニー「論理と制御フロー」セクションの一部 — レッスン 2/56。
ポインタが何であるかが理解できたので、次は実際に変数のメモリ住所を取得する方法を学ぶ必要があります。ここでアドレス演算子(
&)の登場です。アドレス演算子 & を変数名の前に置くことで、そのメモリアドレスを取得できます。&variable_name を使用すると、その変数が格納されているメモリ上の位置を返します。
int number = 42;
int* ptr = &number; // ptr は現在 number のアドレスを格納していますこの例では、&number が変数 number のメモリ領域の `address` を取得し、その `address` をポインタ ptr に代入しています。ポインタには値 42 そのものは含まれず、42 が格納されている `address` が含まれます。
変数とそのポインタの間のこの関係は、メモリを直接操作する上で不可欠です。アドレスを保持するポインタを取得すれば、それを使用して元の変数に間接的にアクセスしたり、改変したりできるようになります。
チャレンジ
簡単整数変数とポインタを使用してアドレス演算子を実証するプログラムを作成してください。
例えば、アドレスが
注:出力に角括弧を含めないでください。
score という名前の整数変数を宣言し、値 85 で初期化します。
アドレス演算子を使用して score 変数のメモリ領域のアドレスを保持する、scorePtr という名前のポインタを作成します。
ポインタに格納されているメモリ領域のアドレスを以下の形式で出力してください:
Address: 0x...0x7fff5fbff6ac の場合、出力は次のようになります:
Address: 0x7fff5fbff6ac0x プレフィックスは、C++ におけるメモリ領域のアドレスの標準的な 16 進数表記の一部です。自分で試してみよう
#include <iostream>
using namespace std;
int main() {
// TODO: 以下にコードを書いてください
return 0;
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。