C 言語でのポインタの比較

CCBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

C言語では、ポインタ同士を、「より大きい」「より小さい」「等しい」などの関係演算子を使って比較することができます。この実験では、Cプログラミング言語でポインタを比較する方法を紹介し、同じ配列を指す同じ型および異なる型のポインタの例を示します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/PointersandMemoryGroup(["Pointers and Memory"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c/BasicsGroup -.-> c/variables("Variables") c/BasicsGroup -.-> c/operators("Operators") c/ControlFlowGroup -.-> c/if_else("If...Else") c/PointersandMemoryGroup -.-> c/pointers("Pointers") c/PointersandMemoryGroup -.-> c/memory_address("Memory Address") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123299{{"C 言語でのポインタの比較"}} c/operators -.-> lab-123299{{"C 言語でのポインタの比較"}} c/if_else -.-> lab-123299{{"C 言語でのポインタの比較"}} c/pointers -.-> lab-123299{{"C 言語でのポインタの比較"}} c/memory_address -.-> lab-123299{{"C 言語でのポインタの比較"}} c/output -.-> lab-123299{{"C 言語でのポインタの比較"}} end

ポインタ変数の宣言

プログラムの要件に応じて、同じ型または異なる型の2つのポインタ変数を宣言します。この例では、ptrAptrB という名前の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 プログラミングでは、関係演算子を使用してポインタ同士を比較することができます。この実験の例では、同じ配列を指す同じ型および異なる型のポインタを比較する方法を示しています。ポインタを比較する際には、正確な結果を得るために、同じ配列を指していることを確認してください。