Syntax C- dynamisches Array ausgeben

Ondori
Mausschubser
Mausschubser
Beiträge: 89
Registriert: 28. Okt 2006 19:50

Syntax C- dynamisches Array ausgeben

Beitrag von Ondori »

Ich möchte alle Elemente eines Arrays ausgeben, dessen Länge ich nicht kenne.
Ich habe einen Zeiger auf das Array zur Verfügung. Als C-Neuling treibt mich diese Aufgabe gerade etwas in den Wahnsinn...
Ich habe versucht die Länge mit sizeof(Zeiger) zu bestimmen, was mir aber nur die Länge des Zeigers angibt...
Ich würde z.B gerne solange auf das Array zugreifen, bis ich NULL erreiche, so ein Vergleich zwischen Array-Element und NULL scheint aber nicht möglich zu sein...

Vielen dank für eure Hilfe

hcdenton
Mausschubser
Mausschubser
Beiträge: 92
Registriert: 21. Dez 2006 17:15

Beitrag von hcdenton »

Du brauchst eine 2. Variable, in der du bei der Allokation des Arrays speicherst, wie viele Elemente das array hat.
Bild

Ondori
Mausschubser
Mausschubser
Beiträge: 89
Registriert: 28. Okt 2006 19:50

Beitrag von Ondori »

Was würde denn in einem Array-Feld stehen, wenn diesem noch kein Wert zugewiesen wurde? Ich habe versucht es mit NULL zu vergleichen, aber irgendwie kann man keinen Integer-Wert mit NULL vergleichen? Bei Java vergleicht man ein Integer-Objekt mit Null, gibt es hier etwas ähnliches?

Thorti
BSc Spammer
BSc Spammer
Beiträge: 1047
Registriert: 1. Dez 2003 11:52
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Thorti »

Hallo,

in C wird ein Array nicht mit "null" oder "0" oder sonstwas initialisiert. Da steht einfach das, was vorher an dieser Stelle im Speicher stand. Deshalb funktioniert deine Vorgehensweise nicht, man benötigt immer zu einem Array die Länge als zusätzlichen Parameter. Ein legth oder sizeof gibts hier nicht für Arrays.

Gruss Thorti
Assistent zur Vorlesung TGDI im WS 11/12

hcdenton
Mausschubser
Mausschubser
Beiträge: 92
Registriert: 21. Dez 2006 17:15

Beitrag von hcdenton »

Damit hat das nichts zu tun. Um das array zu initialisieren kann man z.B. memset benutzen. Ausserdem wird die Methode in einem Fall genutzt: bei 0-terminierten Strings.

Das Problem ist, dass 0 auch ein voellig legitimer Wert im Array sein kann. Wenn man also beliebige Daten in einem Array speichern will (und nicht nur z.B. lesbare ASCII-Zeichen (die alle einen Wert > 0 haben)), kann man die 0 nicht mehr als Ende-Zeichen interpretieren. Die allgemeingueltige Variante ist deshalb, die Laenge in einer extra Variablen zu speichern.
Bild

Antworten

Zurück zu „Archiv“