# Array initialisieren und Inhalt zählen



## Wolfsbein (30. März 2002)

Hallo
ich habe hier ein Array initialisiert:

```
char* myArray[] = {"eins", "zwei", "drei", "vier"};
```
Ich denke aber das ließe sich eleganter machen, aber ich weiß nicht wie?
Und wenn ich jetzt feststellen will, was in dem Array drin ist, um z.B. eine Schleife zu schreiben:

```
for (int i = 0; i < ArrayInhalte; i++)...
```
habe ich keine Ahnung wie. Mit sizeof(myArray); geht es auf jeden Fall nicht. Wie mache ich das ganze also am Besten?


----------



## Robert Martinu (30. März 2002)

Ob das eleganter geht hängt davon ab, was Du reinschreiben willst.
In der aktuellen Form enthält das Array Strings - die müssen irgendwo herkommen, ohne externe Quelle/einen Algo der sie generiert gehts nicht besser.

Sizeof() liefert Dir die Grösse aller im Array enthaltener Strings zurück. Du könntest überprüfen, ob sizeof(Array)-(sizeof(Array[0])+sizeof(Array[1...x])) 0 ist - dann bist Du durch alle Elemente durch.


Die übliche Art wäre allerdings, entweder die Elementzahl mitzuschreiben oder ein bestimmtes Zeichen als Termination zu verwenden.


----------



## Wolfsbein (31. März 2002)

Das Array wird nicht zur Laufzeit, sondern vorher im Code bestimmt.


----------



## Xeragon (31. März 2002)

> Sizeof() liefert Dir die Grösse aller im Array enthaltener Strings zurück. Du könntest überprüfen, ob sizeof(Array)-(sizeof(Array[0])+sizeof(Array[1...x])) 0 ist - dann bist Du durch alle Elemente durch.



Falsch, der sizeof-Operator gibt die Größe des Arrays in Bytes zurück. Hier haben wir es mit "char*" zu tun (meist 4 Bytes), d.h. indem du den Rübkgabewert durch die Größe eines Feldes dividierst, erhälst du die Anzahl der Elemente:


```
sizeof(Array) / sizeof(Array[0])
```

Sofern die Werte mit denen du das Array initialisierst nicht per Algorithmus errechenbar sind, ist die Methode "Array = { ... }" die sinnvollste.


----------



## Wolfsbein (31. März 2002)

Danke. Ich werde das dann mal ausprobieren.


----------

