Comparaison de pointeurs en langage C

CCBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

En langage C, les pointeurs peuvent être comparés entre eux à l'aide d'opérateurs relationnels, tels que supérieur à, inférieur à et égal à. Ce lab (atelier) vous montrera comment comparer des pointeurs en langage de programmation C et fournira des exemples pour des pointeurs de même type et de types différents pointant vers le même tableau.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/PointersandMemoryGroup(["Pointers and Memory"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) 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{{"Comparaison de pointeurs en langage C"}} c/operators -.-> lab-123299{{"Comparaison de pointeurs en langage C"}} c/if_else -.-> lab-123299{{"Comparaison de pointeurs en langage C"}} c/pointers -.-> lab-123299{{"Comparaison de pointeurs en langage C"}} c/memory_address -.-> lab-123299{{"Comparaison de pointeurs en langage C"}} c/output -.-> lab-123299{{"Comparaison de pointeurs en langage C"}} end

Déclarer des variables pointeur

Commencez par déclarer deux variables pointeur de même type ou de types différents, selon les exigences de votre programme. Dans cet exemple, nous allons déclarer deux pointeurs d'entiers nommés ptrA et ptrB.

int *ptrA, *ptrB;

Affecter une adresse mémoire aux variables pointeur

Ensuite, affectez une adresse mémoire aux variables pointeur en utilisant l'opérateur de déclaration de pointeur (*) et l'opérateur d'adresse (&). Cela peut également être fait en utilisant un transtypage (cast), comme nous l'avons fait dans ces exemples.

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

Comparer des variables pointeur

Comparez les deux variables pointeur en utilisant l'un des opérateurs relationnels. Dans cet exemple, nous utilisons l'opérateur supérieur à (>). Si la condition est vraie, il affichera la déclaration à l'intérieur du bloc if.

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

Répéter les étapes pour différents types de pointeurs

Répétez les étapes 1 à 3 pour des variables pointeur de différents types pointant vers le même tableau. Dans cet exemple, nous déclarons un pointeur d'entier (ptrA) et un pointeur de type flottant (ptrB), et nous leur assignons des adresses mémoire.

int *ptrA;
float *ptrB;

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

Tester la comparaison de pointeurs

Comparez les deux pointeurs en utilisant un opérateur relationnel.

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

Écrire le code dans le fichier main.c

Écrivez l'ensemble du programme dans le fichier main.c situé dans le répertoire ~/project/.

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

Compiler et exécuter le programme

Compilez le programme en utilisant un compilateur C, tel que GCC, et exécutez-le pour tester la comparaison de pointeurs.

Résumé

En programmation C, les pointeurs peuvent être comparés entre eux à l'aide d'opérateurs relationnels. Les exemples de ce laboratoire (lab) montrent comment comparer des pointeurs de même type et de types différents pointant vers le même tableau. Lors de la comparaison de pointeurs, assurez-vous qu'ils pointent vers le même tableau pour obtenir des résultats précis.