Menu
Coddy logo textTech

アドレス演算子 (&)

CoddyのCジャーニー「Logic & Flow」セクションの一部 — レッスン 3/63。

ポインタを宣言できるようになったので、実際にメモリ番地をそこに格納する方法を学ぶ必要があります。アドレス演算子 (&) は、任意の変数のメモリ番地を取得するための鍵となります。

変数名の前に & 演算子を置くと、その変数が格納されているメモリ番地を返します。「この変数はメモリのどこにありますか?」と尋ねていると考えてください。

int age = 25;
int *ptr;
ptr = &age;    // 'age' のアドレスを 'ptr' に格納する

この例では、&ageage 変数のメモリ番地を取得します。次に、このアドレスをポインタ ptr に代入します。これで、ptrage 変数を「指し示して」いることになります。

アドレス演算子は、通常の変数とポインタの間の架け橋となるため、不可欠です。これがないと、ポインタにどの変数を指すべきかを教えることができません。データ型が一致しなければならないことに注意してください。整数のアドレスは、整数用に宣言されたポインタにのみ割り当てることができます。

challenge icon

チャレンジ

簡単

アドレス演算子を使用して変数とポインタを接続する方法を示すCプログラムを作成してください。プログラムは以下の内容を行う必要があります:

  1. number という名前の整数型変数を宣言し、値 42 で初期化します
  2. letter という名前の文字型変数を宣言し、値 'X' で初期化します
  3. num_ptr という名前の整数型へのポインタを宣言します
  4. char_ptr という名前の文字型へのポインタを宣言します
  5. アドレス演算子を使用して、number のアドレスを num_ptr に代入します
  6. アドレス演算子を使用して、letter のアドレスを char_ptr に代入します
  7. 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;
}
quiz icon腕試し

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

Logic & Flowのすべてのレッスン