Menu
Coddy logo textTech

ポインタの宣言

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

ポインタが何であるかを理解できたところで、次はポインタの作成方法について学びましょう。ポインタ変数を宣言する際は、そのポインタがどのタイプのデータを指すのかをコンパイラに伝える特定構文に従います。

ポインタを宣言するための基本構文は次のとおりです: data_type *pointer_name;

int *ptr;        // 整数へのポインタを宣言する
char *ch_ptr;    // 文字へのポインタを宣言する
float *f_ptr;    // 浮動小数点数へのポインタを宣言する

アスタリスク(*)こそが、これをポインター宣言にしている要素です。これにより、この変数には実際のデータ値ではなく、メモリーアドレスが格納されることがコンパイラーに伝えられます。int *ptr; と宣言することは、「ptr は整数型変数のアドレスを格納できるポインターである」と伝えていることになります。

ポインタがまだ有効なメモリアドレスを指していない場合は、NULL に初期化することが良いプラクティスです。これにより、ポインタがランダムなメモリ領域を指すのを防ぐことができます: int *ptr = NULL;

printfを使用してポインタのアドレスを出力する場合、%pフォーマット指定子を使用します。互換性と正確なフォーマットを確保するために、ポインタを(void *)にキャストすることがよく推奨されます: printf("%p", (void *)ptr);

アスタリスクの前にあるデータ型は、ポインタが指すデータの種類を指定していることに注目してください。データ型によって占有するメモリ容量が異なり、コンパイラが適切なメモリ管理を行うためにこの情報を必要とするため、これは重要です。

challenge icon

チャレンジ

簡単
適切なポインタ宣言の構文を示すCプログラムを作成してください。プログラムでは以下を行ってください。
  1. NULL で初期化された int_ptr という名前の int へのポインタを宣言する
  2. NULL で初期化された char_ptr という名前の char へのポインタを宣言する
  3. NULL で初期化された float_ptr という名前の float へのポインタを宣言する
  4. %p フォーマット指定子を付けた printf を使用して、各ポインタに格納されているメモリ領域の address を出力する。出力の際は、正しいフォーマットを保証するためにポインタを (void*) にキャストしてください。例: printf("Label: %p\n", (void*)ptr);

出力は、以下のフォーマットで3つのポインタの address を表示する必要があります。

Integer pointer: [address]
Character pointer: [address]  
Float pointer: [address]

実際のメモリ領域の address は変動しますが、フォーマットとラベルは上に示されている通りに正確に一致させる必要があります。

自分で試してみよう

#include <stdio.h>

int main() {
    // TODO: ここにポインタを宣言してください
    
    
    // TODO: 指定された形式でポインタのアドレスを出力してください
    
    
    return 0;
}
quiz icon腕試し

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

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