for-each Schleife in C
- Schleifen in Programmiersprachen
-
die
for-each
-Schleife in C -
Verwenden Sie Makros, um die
for-each
-Schleife in C zu implementieren
Der folgende Inhalt untersucht, ob die C-Sprache eine for-each
-Schleife unterstützt oder nicht. Zunächst müssen wir genau wissen, was Schleifen sind.
Schleifen in Programmiersprachen
Die Ausführung einer Anweisung oder Sammlung von Wörtern in einer Programmiersprache kann viele Male in einer Schleife ausgeführt werden, wobei die Anzahl der Wiederholungen durch den Abschluss einer Bewertung einer Bedingung bestimmt wird. Die Folgebedingung muss erfüllt sein, damit Anweisungen innerhalb von Schleifen ausgeführt werden.
Das Iterieren durch die Sammlungskomponenten kann mit Hilfe der for-each
-Schleife bewerkstelligt werden. Die Sammlung kann eine Liste oder ein Array sein.
Es führt seine Operationen für jedes Element des Arrays aus.
die for-each
-Schleife in C
Das Konstrukt for-each
wird in C nicht unterstützt und kann nicht implementiert werden. Wenn ein Array unter Verwendung der Punktnotation geparst wird, weiß der Empfänger nicht, wie lang das Array ist.
Daher gibt es keine Möglichkeit festzustellen, wann Sie das Ende des Arrays erreicht haben. Denken Sie daran, dass eine int*
-Variable in C ein Zeiger auf eine Stelle im Speicher ist, die ein int
enthält.
Kein Header-Objekt hat Informationen über die Anzahl der hintereinander angeordneten Zahlen, und das liegt daran, dass es keine gibt. Folglich muss der Programmierer dies im Auge behalten.
Andererseits ist es einfach, etwas zu erstellen, das beim Arbeiten mit Listen analog zu einer for-each
-Schleife funktioniert.
for (Node* node = head; node; node = node.next) {
// Your logic will be here
}
Sie haben die Möglichkeit, eines dieser beiden Dinge zu tun, um dasselbe mit Arrays zu erreichen.
- Die Länge des Arrays sollte im ersten Mitglied des Arrays gespeichert werden.
- Kapseln Sie das Array in ein
struct
, das seine Länge und einen Verweis auf das Array selbst speichert.
Eine solche Struktur wird im folgenden Beispiel gezeigt.
typedef struct job_t {
int countvariable;
int* arr;
} arr_t;
Verwenden Sie Makros, um die for-each
-Schleife in C zu implementieren
Darüber hinaus können wir Makros verwenden, um den Code zu vereinfachen und ihn leichter verständlich und schreibbar zu machen. Für einige Datenstrukturen können wir Makros erstellen, um das for-each
-Konstrukt in C zu implementieren.
Um dieses Konzept besser zu verstehen, schauen wir uns das folgende Beispiel an.
#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);
}
Sie können nun den start
-Index und die Größe
so definieren, dass es auf verfallenden Array-Zeigern funktioniert. int*
wird nicht benötigt und count!= size
wurde in i<size
geändert, falls der Benutzer versehentlich i
auf grösser als size
ändert, wodurch er sich verfangen würde eine Endlosschleife.
Ausgabe:
Shanii Demo index: 3. element: 1
Shanii Demo index: 4. element: 8
Shanii Demo index: 5. element: 32766
Shanii Demo index: 6. element: -1762484992
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