Vergleich von Zeigern in der C-Programmiersprache

CBeginner
Jetzt üben

Einführung

In der Programmiersprache C können Zeiger (Pointers) mithilfe von relationalen Operatoren wie größer als, kleiner als und gleich verglichen werden. In diesem Lab (LabEx) wird gezeigt, wie man Zeiger in der C-Programmiersprache vergleicht und es werden Beispiele für Zeiger gleichen und unterschiedlichen Typs gegeben, die auf dasselbe Array zeigen.

Deklarieren Sie Zeigervariablen

Beginnen Sie mit der Deklaration von zwei Zeigervariablen gleichen oder unterschiedlichen Typs, je nach den Anforderungen Ihres Programms. In diesem Beispiel werden wir zwei Ganzzahlzeiger (Integer-Pointer) mit den Namen ptrA und ptrB deklarieren.

int *ptrA, *ptrB;

Weisen Sie Speicheradressen an Zeigervariablen zu

Als Nächstes weisen Sie den Zeigervariablen eine Speicheradresse zu, indem Sie den Zeigerdeklarationsoperator (*) und den Adressoperator (&) verwenden. Dies kann auch mit einer Typumwandlung (cast) erfolgen, wie in diesen Beispielen gezeigt.

ptrA = (int *) 1;
ptrB = (int *) 2;

Vergleichen Sie Zeigervariablen

Vergleichen Sie die beiden Zeigervariablen mit einem der relationalen Operatoren. In diesem Beispiel verwenden wir den größer-als-Operator (>). Wenn die Bedingung wahr ist, wird die Anweisung innerhalb des if-Blocks ausgegeben.

if(ptrB > ptrA) {
  printf("PtrB is greater than ptrA");
}

Wiederholen Sie die Schritte für verschiedene Zeigertypen

Wiederholen Sie die Schritte 1 - 3 für Zeigervariablen unterschiedlichen Typs, die auf dasselbe Array zeigen. In diesem Beispiel deklarieren wir einen Ganzzahlzeiger (ptrA) und einen Fließkommazeiger (ptrB) und weisen ihnen Speicheradressen zu.

int *ptrA;
float *ptrB;

ptrA = (int *) 1000;
ptrB = (float *) 2000;

Testen Sie den Zeigervergleich

Vergleichen Sie die beiden Zeiger mit einem relationalen Operator.

if(ptrB > ptrA) {
  printf("PtrB is greater than ptrA");
}

Schreiben Sie Code in der Datei main.c

Schreiben Sie das gesamte Programm in der Datei main.c, die sich im Verzeichnis ~/project/ befindet.

#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;
}

Kompilieren und ausführen Sie das Programm

Kompilieren Sie das Programm mit einem C-Compiler wie GCC und führen Sie es aus, um den Zeigervergleich zu testen.

Zusammenfassung

In der C-Programmierung können Zeiger (Pointers) mithilfe von relationalen Operatoren miteinander verglichen werden. Die Beispiele in diesem Lab (Praktikum) zeigen, wie man Zeiger gleichen und unterschiedlichen Typs vergleicht, die auf dasselbe Array zeigen. Beim Vergleichen von Zeigern sollten Sie sicherstellen, dass sie auf dasselbe Array zeigen, um genaue Ergebnisse zu erhalten.