for-each bucle en C

Muhammad Zeeshan 12 octubre 2023
  1. Bucles en lenguajes de programación
  2. el bucle for-each en C
  3. Usar macros para implementar el bucle for-each en C
for-each bucle en C

El siguiente contenido investigará si el lenguaje C admite o no un bucle para cada uno. En primer lugar, debemos saber con precisión qué son los bucles.

Bucles en lenguajes de programación

La ejecución de una declaración o colección de palabras en un lenguaje de programación puede repetirse muchas veces, con el número de repeticiones determinado por la conclusión de una evaluación de una condición. La condición consecuente debe cumplirse para que las declaraciones se ejecuten dentro de los bucles.

La iteración a través de los componentes de la colección se puede lograr con la ayuda del bucle for-each. La colección puede ser una lista o una matriz.

Realiza sus operaciones para cada elemento del arreglo.

el bucle for-each en C

La construcción for-each no se admite en C y no se puede implementar. Cuando se analiza una matriz utilizando la notación de puntos, el receptor no sabe cuánto mide la matriz.

Por lo tanto, no hay forma de determinar cuándo ha llegado al final de la matriz. Recuerde que una variable int* en C es un puntero a una ubicación en la memoria que contiene un int.

Ningún objeto de encabezado tiene información sobre la cantidad de números ordenados en secuencia, y esto se debe a que no hay ninguno. Como resultado, el programador debe realizar un seguimiento de esto.

Por otro lado, crear algo que funcione de manera análoga a un bucle for-each cuando se trabaja con listas es simple.

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

Tiene la opción de hacer cualquiera de estas dos cosas para lograr lo mismo usando arreglos.

  1. La longitud de la matriz debe almacenarse en el primer miembro de la matriz.
  2. Encapsule la matriz dentro de una estructura que almacene su longitud y una referencia a la propia matriz.

Una de tales estructuras se muestra en el siguiente ejemplo.

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

Usar macros para implementar el bucle for-each en C

Además, podemos utilizar macros para simplificar el código y hacerlo más fácil de entender y escribir. Para algunas estructuras de datos, podemos crear macros para implementar la construcción for-each en C.

Para adquirir una mejor comprensión de este concepto, echemos un vistazo al siguiente ejemplo.

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

Ahora puedes definir el índice start y el size para que funcione sobre punteros de arrays en descomposición. No hay necesidad de int* y se ha cambiado count!= size por i<size en caso de que el usuario altere inadvertidamente i para que sea mayor que size, lo que le haría quedar atrapado en un bucle sin fin.

Producción :

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