アドレス演算子 (&)
CoddyのCジャーニー「Logic & Flow」セクションの一部 — レッスン 3/63。
ポインタを宣言できるようになったので、実際にメモリ番地をそこに格納する方法を学ぶ必要があります。アドレス演算子 (&) は、任意の変数のメモリ番地を取得するための鍵となります。
変数名の前に & 演算子を置くと、その変数が格納されているメモリ番地を返します。「この変数はメモリのどこにありますか?」と尋ねていると考えてください。
int age = 25;
int *ptr;
ptr = &age; // 'age' のアドレスを 'ptr' に格納するこの例では、&age は age 変数のメモリ番地を取得します。次に、このアドレスをポインタ ptr に代入します。これで、ptr は age 変数を「指し示して」いることになります。
アドレス演算子は、通常の変数とポインタの間の架け橋となるため、不可欠です。これがないと、ポインタにどの変数を指すべきかを教えることができません。データ型が一致しなければならないことに注意してください。整数のアドレスは、整数用に宣言されたポインタにのみ割り当てることができます。
チャレンジ
簡単アドレス演算子を使用して変数とポインタを接続する方法を示すCプログラムを作成してください。プログラムは以下の内容を行う必要があります:
numberという名前の整数型変数を宣言し、値 42 で初期化しますletterという名前の文字型変数を宣言し、値 'X' で初期化しますnum_ptrという名前の整数型へのポインタを宣言しますchar_ptrという名前の文字型へのポインタを宣言します- アドレス演算子を使用して、
numberのアドレスをnum_ptrに代入します - アドレス演算子を使用して、
letterのアドレスをchar_ptrに代入します printfと%pフォーマット指定子を使用して、両方のポインタに格納されているアドレスを出力します
出力は、以下の形式でポインタのアドレスを表示する必要があります:
Address of number: [address]
Address of letter: [address]実際のメモリアドレスはプログラムの実行ごとに異なりますが、形式とラベルは上記と正確に一致させる必要があります。
チートシート
アドレス演算子 (&) は、変数のメモリアドレスを返します:
int age = 25;
int *ptr;
ptr = &age; // 'age' のアドレスを 'ptr' に格納するアドレス演算子は、変数とポインタを接続するために不可欠です。データ型は一致している必要があります。整数のアドレスは、整数用に宣言されたポインタにのみ割り当てることができます。
printf でポインタのアドレスを出力するには、%p 書式指定子を使用します。
自分で試してみよう
#include <stdio.h>
int main() {
// TODO: ここにコードを記述してください
// 1. 変数を宣言して初期化する
// 2. ポインタを宣言する
// 3. アドレス演算子を使用してアドレスを割り当てる
// 4. 指定された形式を使用してアドレスを出力する
return 0;
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。