この記事では、C言語のprintf関数
で使用できる書式指定子%p
について解説します。
書式”%p”とは
C言語のprintf関数
で使用できる書式指定子%p
は、ポインタの値を表示するために使用されます。
ポインタはメモリ上のアドレスを指し示す変数であり、%p
を使うことでそのアドレスを表示することができます。
ポインタの値を表示する
%p
を使用すると、ポインタ変数の値が16進数で表示されます。
この値は、ポインタが指し示すメモリ上のアドレスを表しています。
例えば、以下のようなコードを考えてみましょう。
int* ptr;
int num = 10;
ptr = #
printf("ポインタの値: %p\n", ptr);
上記のコードでは、int型
の変数num
のアドレスをポインタ変数ptr
に代入しています。
そして、%p
を使ってptr
の値を表示しています。
実行結果は、ポインタ変数ptr
が指し示すメモリ上のアドレスが16進数で表示されます。
ポインタのアドレスを表示する
%p
を使用すると、ポインタ変数自体のアドレスを表示することもできます。
ポインタ変数自体もメモリ上のアドレスを持っており、%p
を使うことでそのアドレスを表示することができます。
以下のコードを見てみましょう。
int* ptr;
printf("ポインタのアドレス: %p\n", &ptr);
上記のコードでは、int型
のポインタ変数ptr
のアドレスを%p
を使って表示しています。
実行結果は、ポインタ変数ptr
自体のアドレスが16進数で表示されます。
書式”%p”の使い方
書式指定子%p
を使ってポインタの値やアドレスを表示する方法について説明します。
ポインタ変数の値を表示する
ポインタ変数の値を表示するには、printf関数
の書式指定子として%p
を使用します。
以下のコードを参考にしてみましょう。
int* ptr;
int num = 10;
ptr = #
printf("ポインタの値: %p\n", ptr);
上記のコードでは、int型
の変数num
のアドレスをポインタ変数ptr
に代入しています。
そして、%p
を使ってptr
の値を表示しています。
実行結果は、ポインタ変数ptr
が指し示すメモリ上のアドレスが16進数で表示されます。
ポインタ変数のアドレスを表示する
ポインタ変数自体のアドレスを表示するには、printf関数
の書式指定子として%p
を使用します。
以下のコードを参考にしてみましょう。
int* ptr;
printf("ポインタのアドレス: %p\n", &ptr);
上記のコードでは、int型
のポインタ変数ptr
のアドレスを%p
を使って表示しています。
実行結果は、ポインタ変数ptr
自体のアドレスが16進数で表示されます。
書式”%p”の注意点
書式指定子%p
を使用する際に注意が必要な点について説明します。
ポインタ変数がNULLの場合の表示
ポインタ変数がNULL(ヌルポインタ)の場合、%p
を使って表示すると、nilという特殊な値が表示されます。
以下のコードを見てみましょう。
int* ptr = NULL;
printf("ポインタの値: %p\n", ptr);
上記のコードでは、int型
のポインタ変数ptr
にNULLを代入しています。
そして、%p
を使ってptr
の値を表示しています。
実行結果は、nilという値が表示されます。
ポインタ変数の型による表示の違い
ポインタ変数の型によって、%p
を使って表示される値の形式が異なる場合があります。
例えば、以下のコードを考えてみましょう。
int* intPtr;
char* charPtr;
printf("int型ポインタの値: %p\n", intPtr);
printf("char型ポインタの値: %p\n", charPtr);
上記のコードでは、int型
のポインタ変数intPtr
とchar型
のポインタ変数charPtr
の値を%p
を使って表示しています。
実行結果は、int型
のポインタ変数の場合は16進数で表示され、char型
のポインタ変数の場合は文字列のアドレスが表示されます。
以上が、C言語のprintf関数
で使用できる書式指定子%p
についての解説です。
ポインタの値やアドレスを表示する際には、%p
を適切に使って情報を表示することができます。