Klicken Sie Zeilen an, die mit + markiert sind. Dort ist Hilfeinformation hinterlegt.
Hier wird eine Arrayvariable mit Name a und Elementtyp int definiert. Weil in den eckigen Klammern keine Arraygröße angegeben ist, legt die Anzahl der Initialisierungswerte die Arraygröße 4 fest.
Die Initialisierung ist anders als in Java keine Kurzschreibweise für new. Es gibt in C kein new.
Man beachte auch, dass die eckigen Klammern in C anders als in Java hinter dem Variablennamen stehen.
Der Speicher für das Array wird hier vollständig auf dem Stack angelegt, ein Konzept das es in Java nicht gibt.
In C ist in einem Array anders als in Java nicht gespeichert, wie viele Element das Array hat.
Deshalb wird hier eine Konstante definiert und mit der Elementanzahl initialisiert.
Die Elementanzahl kann mit Hilfe von sizeof berechnet werden. Der Ausdruck wird bereits vom Compiler und nicht erst zu Laufzeit des Programms ausgewertet. sizeof liefert eine ganze Zahl ohne Vorzeichen (Typname size_t), deshalb die Typanpassung (int).
Statt (void*) a könnte man die Langschreibweise (void*) &a[0] verwenden (Ausprobieren!).
Auch (void*) &a liefert dieselbe Adresse (Ausprobieren!).
Allerdings hat &a einen anderen Typ als a, was aber hier wegen der Typanpassung auf void* keine Rolle spielt.
Die Schleife sieht aus wie in Java. Es gibt aber kein a.length (siehe die Hilfeinformation zur Konstanten n oben).
Statt &a[i] kann man auch a + i schreiben und statt a[i] auch *(a + i). Ausprobieren!