はじめに
C 言語では、ポインタ同士を、「より大きい」「より小さい」「等しい」などの関係演算子を使って比較することができます。この実験では、C プログラミング言語でポインタを比較する方法を紹介し、同じ配列を指す同じ型および異なる型のポインタの例を示します。
ポインタ変数を宣言する
プログラムの要件に応じて、同じ型または異なる型の 2 つのポインタ変数を宣言します。この例では、ptrA と ptrB という名前の 2 つの整数型ポインタを宣言します。
int *ptrA, *ptrB;
ポインタ変数にメモリアドレスを割り当てる
次に、ポインタ宣言演算子 (*) とアドレス演算子 (&) を使用して、ポインタ変数にメモリアドレスを割り当てます。これは、これらの例で行ったように、キャストを使用しても行うことができます。
ptrA = (int *) 1;
ptrB = (int *) 2;
ポインタ変数を比較する
関係演算子のいずれかを使用して、2 つのポインタ変数を比較します。この例では、「より大きい」演算子 (>) を使用しています。条件が真であれば、if ブロック内の文が出力されます。
if(ptrB > ptrA) {
printf("PtrB is greater than ptrA");
}
異なる型のポインタに対して手順を繰り返す
同じ配列を指す異なる型のポインタ変数に対して、手順 1~3 を繰り返します。この例では、整数型 (ptrA) と浮動小数点型 (ptrB) のポインタを宣言し、それらにメモリアドレスを割り当てます。
int *ptrA;
float *ptrB;
ptrA = (int *) 1000;
ptrB = (float *) 2000;
ポインタの比較をテストする
関係演算子を使用して 2 つのポインタを比較します。
if(ptrB > ptrA) {
printf("PtrB is greater than ptrA");
}
main.c ファイルにコードを記述する
~/project/ ディレクトリにある main.c ファイルにプログラム全体を記述します。
#include <stdio.h>
int main() {
int *ptrA, *ptrB;
float *ptrC, *ptrD;
ptrA = (int *) 1;
ptrB = (int *) 2;
ptrC = (float *) 100;
ptrD = (float *) 200;
if (ptrB > ptrA) {
printf("ptrB is greater than ptrA\n");
}
if (ptrD > ptrC) {
printf("ptrD is greater than ptrC\n");
}
return 0;
}
プログラムをコンパイルして実行する
GCC などの C コンパイラを使用してプログラムをコンパイルし、プログラムを実行してポインタ比較をテストします。
まとめ
C プログラミングでは、関係演算子を使用してポインタ同士を比較することができます。この実験の例では、同じ配列を指す同じ型および異なる型のポインタを比較する方法を示しています。ポインタを比較する際には、正確な結果を得るために、同じ配列を指していることを確認してください。



