この記事では、C言語におけるポインタ変数の基本的な使い方から応用までを解説します。
ポインタ変数を使うことで、メモリ上のデータに直接アクセスしたり、配列や関数、動的メモリの操作を行ったりすることができます。
初心者の方でもわかりやすく、ポインタ変数の基礎を学ぶことができます。
ポインタ変数とは
ポインタ変数は、メモリ上のアドレスを格納するための変数です。
C言語では、変数自体がメモリ上のアドレスを持っており、そのアドレスをポインタ変数に格納することで、その変数の値やデータにアクセスすることができます。
ポインタ変数の概要
ポインタ変数は、他の変数のアドレスを格納するための変数です。
ポインタ変数は、アドレスを格納するための特別な型を持ちます。
例えば、int型
の変数のアドレスを格納するためには、int型
のポインタ変数を使用します。
ポインタ変数は、アドレスを通じて他の変数にアクセスすることができます。
ポインタ変数を使用することで、変数の値を直接変更したり、参照したりすることができます。
ポインタ変数の宣言と初期化
ポインタ変数を宣言するには、変数名の前に *
を付けます。
例えば、int型
のポインタ変数を宣言する場合は、以下のように記述します。
int *ptr;
ポインタ変数を初期化するには、変数のアドレスを代入します。
変数のアドレスを取得するには、アンパサンド(&)演算子を使用します。
例えば、int型
の変数 num
のアドレスをポインタ変数 ptr
に代入する場合は、以下のように記述します。
int num = 10;
int *ptr = #
ポインタ変数を使用して、変数の値にアクセスするには、間接参照演算子(*)を使用します。
例えば、ポインタ変数 ptr
が指す変数の値にアクセスする場合は、以下のように記述します。
int value = *ptr;
ポインタ変数を使用することで、他の変数の値を参照したり、変更したりすることができます。
ポインタ変数は、C言語の重要な概念の一つであり、効果的なプログラミングに欠かせない要素です。
ポインタ変数の使い方
ポインタ変数は、メモリ上のアドレスを格納するための変数です。
ポインタ変数を使用することで、直接メモリ上のデータにアクセスすることができます。
以下では、ポインタ変数の使い方について詳しく説明します。
ポインタ変数の値の取得
ポインタ変数の値を取得するには、参照演算子(*)を使用します。
参照演算子をポインタ変数の前に置くことで、そのポインタが指し示すメモリ上の値を取得することができます。
#include <stdio.h>
int main() {
int num = 10;
int *ptr = # // ポインタ変数ptrにnumのアドレスを代入
printf("numの値: %d\n", num);
printf("ptrの値: %p\n", ptr);
printf("ptrが指し示す値: %d\n", *ptr); // ポインタ変数の値を取得
return 0;
}
上記のコードでは、int型
の変数num
を宣言し、そのアドレスをint型
のポインタ変数ptr
に代入しています。
そして、参照演算子を使用してポインタ変数ptr
が指し示す値を取得し、それを表示しています。
実行結果は以下のようになります。
numの値: 10
ptrの値: 0x7ffeeb3a4a4c
ptrが指し示す値: 10
ポインタ変数の値の変更
ポインタ変数の値を変更するには、代入演算子(=)を使用します。
代入演算子を使用してポインタ変数に新しいアドレスを代入することで、ポインタ変数が指し示すメモリ上の値を変更することができます。
#include <stdio.h>
int main() {
int num1 = 10;
int num2 = 20;
int *ptr = &num1; // ポインタ変数ptrにnum1のアドレスを代入
printf("num1の値: %d\n", num1);
printf("ptrが指し示す値: %d\n", *ptr);
ptr = &num2; // ポインタ変数ptrにnum2のアドレスを代入
printf("num1の値: %d\n", num1);
printf("num2の値: %d\n", num2);
printf("ptrが指し示す値: %d\n", *ptr);
return 0;
}
上記のコードでは、int型
の変数num1
とnum2を宣言し、それぞれのアドレスをポインタ変数ptr
に代入しています。
最初にptrが指し示す値を表示した後、ptrにnum2のアドレスを代入し、再度ptrが指し示す値を表示しています。
実行結果は以下のようになります。
num1の値: 10
ptrが指し示す値: 10
num1の値: 10
num2の値: 20
ptrが指し示す値: 20
ポインタ変数のアドレスの取得
ポインタ変数自体のアドレスを取得するには、アンパサンド(&)を使用します。
アンパサンドをポインタ変数の前に置くことで、そのポインタ変数自体のアドレスを取得することができます。
#include <stdio.h>
int main() {
int num = 10;
int *ptr = # // ポインタ変数ptrにnumのアドレスを代入
printf("ptrの値: %p\n", ptr);
printf("ptr自体のアドレス: %p\n", &ptr);
return 0;
}
上記のコードでは、int型
の変数num
を宣言し、そのアドレスをint型
のポインタ変数ptr
に代入しています。
そして、ptrの値とptr自体のアドレスを表示しています。
実行結果は以下のようになります。
ptrの値: 0x7ffeeb3a4a4c
ptr自体のアドレス: 0x7ffeeb3a4a40
ポインタ変数の使い方について、値の取得や変更、アドレスの取得について説明しました。
ポインタ変数を使うことで、メモリ上のデータに直接アクセスすることができるため、効率的なプログラミングが可能となります。