C supporta il ciclo foreach?

C supporta il ciclo foreach?
IL Forech Loop è un'istruzione di flusso di controllo che è una sorta di struttura per loop che facilita l'attraversamento della raccolta dei dati iterabili. Realizza questo rimuovendo la procedura di inizializzazione.

Molti linguaggi di programmazione supportano Forech Loop Come C#, C ++ 11 e Java ma alcune lingue non lo supportano. Una domanda comune posta da molti utenti è quella “Supporta C supporta il ciclo?". In questo articolo, affronteremo questa domanda.

C supporta il ciclo "foreach"?

NO, C non supporta Forech Loop. Tuttavia, ci sono alcune soluzioni da utilizzare Forech Loop In C come spiegato di seguito.

Soluzione 1: simulazione di foreach in c usando macro

Un modo per simulare a Forech Loop In C sta usando Macro. IL macro Sembra un frammento del codice che viene dato un nome e può essere invocato usando quel nome. Quando il macro è invocato, il preprocessore sostituisce il macro Nome con il frammento di codice corrispondente.

Per simulare a Forech Loop usare un macro, Puoi definire un file macro Questo richiede due argomenti: una variabile loop e una raccolta di dati iterabile. IL macro può quindi espandersi su uno standard per loop che itera sulla raccolta utilizzando la variabile loop

Considera quanto segue macro definizione:

#define foreach (articolo, array) \

per (int i = 0; i < sizeof(array) / sizeof(array[0]); i++) \
per (item = & array [i]; & array [i] != & array [sizeof (array) / sizeof (array [0])]; i ++, item = & array [i])

La macro di cui sopra prende due argomenti: articolo, che rappresenta la variabile loop e l'array, che rappresenta la raccolta dei dati iterabili. IL macro Quindi si espande a un ciclo nidificato che itera sull'array utilizzando la variabile loop.

Per usare il macro, Puoi semplicemente invocarlo con la variabile loop e l'array come argomenti, come segue:

int array [] = 1, 2, 3, 4, 5;
Int * oggetto;
foreach (articolo, array)
printf ("%d \ n", * articolo);

Il codice sopra iterirà sopra l'array e stamperà ogni elemento utilizzando la variabile del loop elemento. IL macro si espanderà su uno standard per loop che iterano sull'array usando la variabile loop.

Soluzione 2: simulazione di foreach in c utilizzando la macro con elenco collegato

In un elenco collegato, ogni elemento, noto anche come nodo, ha un valore e un puntatore al nodo successivo nell'elenco. Per iterare sugli elementi dell'elenco collegato, è possibile creare un ciclo che attraversa l'elenco seguendo questi puntatori. UN Forech Loop può essere simulato in C per elenchi collegati creando un ciclo che itera su ciascun nodo nell'elenco. Ecco un esempio di un ciclo per un elenco collegato in C:

#define foreach (nodo, elenco) \

per (nodo* n = head; n != Null; n = n-> Next)

Nel codice sopra, la testa è un puntatore al primo nodo nell'elenco. Il ciclo inizia impostando il puntatore n a testa, quindi iterate fintanto che n non è nullo, il che significa che ci sono ancora nodi nell'elenco da elaborare. Ad ogni iterazione del ciclo, il codice all'interno del loop viene eseguito per il nodo corrente indicato da N, quindi N viene aggiornato per puntare al nodo successivo nell'elenco accedendo al puntatore successivo del nodo corrente.

Questo ciclo consente di elaborare facilmente ogni elemento nell'elenco collegato senza dover attraversare manualmente l'elenco utilizzando le operazioni di punta.

Soluzione 3: simulazione di foreach in c usando macro con array

Le macro possono anche essere utilizzate con array per simulare Forech Loop in c. La seguente macro può essere utilizzata per simulare il ciclo foreach in C con array:

#define foreach (articolo, array) \

per (int keep = 1, \
count = 0, \
size = sizeof (array) / sizeof * (array); \ keep && count != dimensione; \ keep = !Keep, Count ++) \
per (Item = (Array) + Count; Keep; Keep = !Mantenere)

La macro sopra richiede due argomenti: articolo e array. L'elemento indica l'attuale elemento nel ciclo e l'array rappresenta l'array che viene in loop. IL macro usa nidificato per i loop per iterare su ciascun elemento nell'array.

Il primo per loop imposta le variabili utilizzate per controllare il loop. Il secondo per loop iterate su ciascun elemento nell'array aumentando la variabile di conteggio e impostando l'elemento per puntare l'elemento corrente.

Utilizzando questa macro, è possibile simulare facilmente un ciclo foreach su un array in C, che può migliorare la leggibilità del codice e ridurre la quantità di codice della piastra della caldaia necessaria per iterare su un array.

Soluzione 4: simulazione di foreach in c usando il puntatore aritmetico

Uno dei modi per creare un ciclo simile a un fooch in c è utilizzare il concetto di puntatore aritmetico.

Nel caso di iterazione su un array, C fornisce una proprietà utile di array che finiscono sempre con un elemento nullo o un valore sentinella. Questo valore Sentinel può essere usato per contrassegnare la fine dell'array in modo da sapere quando smettere di iterare. Usando l'aritmetica del puntatore, possiamo sfruttare questa proprietà per iterare gli elementi di un array in modo semplice e idiomatico.

L'espressione (& arr) [1] in c fornisce un puntatore all'elemento dopo la fine dell'array arr. Ciò significa che il puntatore (& arr) [1] indica la posizione della memoria immediatamente dopo l'ultimo elemento dell'array. Usando questo puntatore in un ciclo per loop, possiamo iterare su tutti gli elementi dell'array come segue:

int array [] = 1, 2, 3, 4, 5;
per (int * p = array; p < ( & array)[1]; p++)
printf ("%d \ n", * p);

Nell'esempio sopra, la variabile P è un puntatore al primo elemento dell'array arr. La condizione del loop p < (&arr)[1] checks if p has reached the end of the array. Finally, the expression *p gives the value of the current element pointed to by p, which is printed to the console using printf(). This code will print all the elements of the array arr.

Usando questo approccio idiomatico, possiamo creare un semplice ed efficiente per ciascuno come il loop in c per iterazioni su array.

Soluzione 5: simulazione di foreach nel ciclo C con i dati

Nella programmazione C, per loop attraverso una stringa, è possibile utilizzare un ciclo per una condizione di terminazione. Poiché C non ha un tipo di dati di stringa integrato, le stringhe sono generalmente rappresentate come matrici di caratteri, terminate con un carattere null ('\ 0').

Per loop attraverso una stringa in C, è possibile inizializzare una variabile puntatore per indicare il primo carattere nella stringa, quindi utilizzare un ciclo per iterare sui caratteri nella stringa fino a raggiungere il carattere null terminale.

Ecco un esempio di loop attraverso una stringa in c:

char str [] = "ciao, mondo!";
char * p = str;
per (;* p != '\ 0'; p ++)
printf ("%c", * p);

Nell'esempio sopra, il puntatore P viene inizializzato per indicare il primo carattere nella stringa STR. Il ciclo per quindi si itera su ciascun carattere nella stringa incrementando il puntatore P fino a raggiungere il carattere null. All'interno del ciclo, il carattere corrente viene stampato utilizzando lo specificatore del formato %C nella funzione printf.

Si noti che un carattere null terminato non è coinvolto nell'output del loop, poiché segnala la fine della stringa. Inoltre, il loop con i dati è una soluzione per iterating sui dati in C, ma non è una sostituzione diretta per il costrutto del ciclo per ogni

Conclusione

IL Forech Loop è un tipo di loop per loop che consente l'attraversamento delle raccolte di dati iterabili. Mentre molti linguaggi di programmazione consentono il Forech Loop, C non lo supporta. Tuttavia, come spiegato sopra, ci sono diversi modi per simulare Forech Loop in C usando Macro e altre tecniche. Con queste soluzioni, i programmatori C possono ottenere la stessa funzionalità di Forech Loop In altri linguaggi di programmazione.