Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo allerseits,

ich bin noch Programmieranfängerin und hab ein (vermutlich) einfaches Problem.

Ich möchste aus einem Array z.B. array[3]={1,2,3} den wert 2 löschen.

Also array[1]=1; array[2]= "hier soll leer sein", array[3]=3.

Hab gegoogelt und bin darauf gestoßen das man array[2]=NULL schreiben kann,

aber löscht das einen Eintrag wirklich oder wird der dann nur durch 0 ersetzt?

Schonmal danke im vorraus.

Grüße,

Julia

Geschrieben

Erstmal beginnt die Nummerierung von Array-Elementen mit der 0. Folglich hat der 2. Eintrag den Index 1.

Einem Array-Eintrag die NULL-Pointer-Konstante zuzuweisen, sofern der Typ der Array-Elemente dies überhaupt zulässt, bringt Dich nicht weiter. Dadurch verschwindet kein Eintrag, sondern nur der Inhalt wird verändert.

Wenn häufig Elemente einer Liste mittendrin gelöscht oder hinzugefügt werden sollen, sind Arrays ohnehin keine optimale Wahl.

Geschrieben

Danke für die Antwort.

Gibt es nun aber "leere" felder in einem array, kann man einen wert wirklich löschen?

Und was wäre die Alternative zu arrays?

Geschrieben
Gibt es nun aber "leere" felder in einem array, kann man einen wert wirklich löschen?
Nicht im allgemeinen Fall. Falls du in deinem Array Zeiger hast, kannst du Nullzeiger verwenden, um leere Felder zu kennzeichnen. Ansonsten haben Variablen in C und C++ immer einen Wert, es sei denn, du selbst interpretierst einen bestimmten Wert als "leer". Dann darf dieser Wert aber nicht als gültiger, nicht-leerer Wert auftauchen.

Wenn dein Array dynamisch angelegt ist (malloc oder new), kannst du Elemente entfernen, indem du die verbliebenen Werte in ein neues Array mit verringerter Größe umkopierst.

Und was wäre die Alternative zu arrays?
Falls du C++ benutzt, bietet die Standardbibliothek mehrere Containerklassen, die alle die Operation des Entfernens einzelner Elemente unterstützen. Die Unterschiede zwischen den Containern liegen in den Zeitkomplexitäten der einzelnen Operationen. Wenn du beispielweise häufig einzelne Elemente irgendwo in der Mitte einfügen oder entfernen musst, würde sich std::list anbieten. Zugriff über Indexoperator geht allerdings bei std::list nicht.

Wenn du C benutzt, kannst du solche Datenstrukturen natürlich auch benutzen, du müsstest sie nur selbst implementieren.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...