for-each boucle en C

Muhammad Zeeshan 12 octobre 2023
  1. Boucles dans les langages de programmation
  2. la boucle for-each en C
  3. Utiliser des macros pour implémenter la boucle for-each en C
for-each boucle en C

Le contenu suivant étudiera si oui ou non le langage C prend en charge une boucle for-each. Tout d’abord, il faut savoir précisément ce que sont les boucles.

Boucles dans les langages de programmation

L’exécution d’une instruction ou d’un ensemble de mots dans un langage de programmation peut être bouclée plusieurs fois, le nombre de répétitions étant déterminé par la conclusion d’une évaluation d’une condition. La condition qui en résulte doit être satisfaite pour que les instructions soient exécutées à l’intérieur des boucles.

L’itération à travers les composants de la collection peut être accomplie à l’aide de la boucle for-each. La collection peut être une liste ou un tableau.

Il effectue ses opérations pour chaque élément du tableau.

la boucle for-each en C

La construction for-each n’est pas prise en charge en C et ne peut pas être implémentée. Lorsqu’un tableau est analysé à l’aide de la notation par points, le récepteur ne connaît pas la longueur du tableau.

Par conséquent, il n’y a aucun moyen de déterminer quand vous avez atteint la fin du tableau. Souvenez-vous qu’une variable int* en C est un pointeur vers un emplacement en mémoire qui contient un int.

Aucun objet d’en-tête n’a d’informations sur le nombre de nombres disposés en séquence, et c’est parce qu’il n’y en a pas. Par conséquent, le programmeur doit garder une trace de cela.

D’un autre côté, créer quelque chose qui fonctionne de manière analogue à une boucle for-each lorsque vous travaillez avec des listes est simple.

for (Node* node = head; node; node = node.next) {
  // Your logic will be here
}

Vous avez la possibilité de faire l’une de ces deux choses pour accomplir la même chose en utilisant des tableaux.

  1. La longueur du tableau doit être stockée dans le premier membre du tableau.
  2. Encapsulez le tableau dans une struct qui stocke sa longueur et une référence au tableau lui-même.

Une telle structure est illustrée dans l’exemple suivant.

typedef struct job_t {
  int countvariable;
  int* arr;
} arr_t;

Utiliser des macros pour implémenter la boucle for-each en C

De plus, nous pouvons utiliser des macros pour simplifier le code et le rendre plus simple à comprendre et à écrire. Pour certaines structures de données, nous pouvons construire des macros pour implémenter la construction for-each en C.

Pour mieux comprendre ce concept, examinons l’exemple suivant.

#include <stdio.h>

int main() {
#define FOREACH(item, arr, start, size)                              \
  for (int i = start, keep = 1; keep && i < size; keep = !keep, i++) \
    for (item = arr[i]; keep; keep = !keep)

  int arr[] = {3, 9, 7, 1, 8};
  FOREACH(int z, arr, 3, 7)
  printf("Shanii Demo index: %d. element: %d\n", i, z);
}

Vous pouvez maintenant définir l’index start et la size pour qu’il fonctionne sur les pointeurs de tableaux en décomposition. Il n’est pas nécessaire que int* et count!= size aient été remplacés par i<size au cas où l’utilisateur modifierait par inadvertance i pour qu’il soit supérieur à size, ce qui les ferait prendre dans une boucle sans fin.

Production:

Shanii Demo index: 3. element: 1
Shanii Demo index: 4. element: 8
Shanii Demo index: 5. element: 32766
Shanii Demo index: 6. element: -1762484992
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn