この記事では、C言語におけるポインタとアドレスの関係について詳しく解説します。
ポインタとは、変数やデータのメモリ上のアドレスを格納するための変数であり、アドレスとはメモリ上の特定の場所を指す数値です。
ポインタとアドレスの関係
ポインタとアドレスは、C言語において非常に重要な概念です。
ポインタは、変数やデータのメモリ上のアドレスを格納するための変数です。
アドレスとは、メモリ上の特定の場所を指す数値のことです。
ポインタとアドレスの関係性
ポインタは、変数のアドレスを格納するための変数です。
変数にはそれぞれメモリ上のアドレスが割り当てられており、ポインタはそのアドレスを格納することができます。
ポインタを使うことで、そのアドレスに格納されている値にアクセスすることができます。
以下に、ポインタとアドレスの関係性を示すサンプルコードを示します。
#include <stdio.h>
int main() {
int num = 10; // 変数numに値10を代入
int *ptr; // ポインタ変数ptrを宣言
ptr = # // 変数numのアドレスをポインタ変数ptrに代入
printf("変数numの値: %d\n", num);
printf("変数numのアドレス: %p\n", &num);
printf("ポインタ変数ptrの値: %p\n", ptr);
printf("ポインタ変数ptrが指す値: %d\n", *ptr);
return 0;
}
上記のコードでは、変数num
に値10
を代入し、ポインタ変数ptr
を宣言しています。
そして、ptr
に&num
を代入することで、ptr
はnum
のアドレスを指すようになります。
*ptr
を使うことで、ptr
が指すアドレスに格納されている値にアクセスすることができます。
ポインタを使った関数への引数の渡し方
ポインタを使うことで、関数に変数を参照渡しすることができます。
参照渡しをすることで、関数内で変数の値を変更することができます。
以下に、ポインタを使った関数への引数の渡し方を示すサンプルコードを示します。
#include <stdio.h>
void changeValue(int *ptr) {
*ptr = 20; // ポインタが指すアドレスに値20を代入
}
int main() {
int num = 10; // 変数numに値10を代入
printf("変更前の変数numの値: %d\n", num);
changeValue(&num); // 変数numのアドレスを渡して値を変更
printf("変更後の変数numの値: %d\n", num);
return 0;
}
上記のコードでは、changeValue関数
を定義し、引数としてポインタ変数ptr
を受け取っています。
changeValue関数
内で、*ptr
に20
を代入することで、ポインタが指すアドレスに新しい値を代入しています。
そして、main関数
内でchangeValue関数
を呼び出し、変数num
のアドレスを渡して値を変更しています。
以上が、ポインタとアドレスの関係についての簡単な説明です。
ポインタを使うことで、変数のアドレスにアクセスしたり、値を変更したりすることができます。