Array leeren in C++

  • Tagchen,
    weiss vielleicht jemand wie man einen Array leert?
    Mein Problem liegt darin, das ich je nach Gebrauch nur eine gewisse Anzahl von Felder (hmm, sagt man da Felder zu???) des Arrays brauche.
    Wenn ich nun aber beim ersten Gebrauch z.B. 7 Felder fülle und beim zweiten Durchlauf nur 6 benötige, behält das 7. Feld den Inhalt vom ersten Durchgang. Und das ist ziemlich schlecht.
    Ich hoffe ich habe mein Problem genau genug beschrieben.
    Vielleicht weiss ja auch jemand wie man es in PHP oder Java macht. Evtl. könnte man es dann ja auch bei C++ verwenden. Bin für jede Antwort dankbar.
    PLZ
    :help

  • Hey Gast!
    Hast Du eine Frage, die Du gerne beantwortet haben möchtet? Klickt auf den folgenden Link und Du wirst die Antwort finden:

    Hier findest Du die Antworten

    Egal, ob es sich um eine Frage zu einem bestimmten Thema in eurem Studium oder um allgemeine Ratschläge handelt - wir haben die Antworten, die ihr sucht. Also zögert nicht und klickt auf den Link! Wir freuen uns darauf, euch zu helfen.

    • Offizieller Beitrag

    öhm weiss zwar weder wie man das in php java oder sonstwo mach aber schreib doch einfach in das feld dann eine 0 rein...

    : drink

    Wie man Fragen richtig stellt!


    https://www.dealfuchs.info/ - Deal Fuchs findet für dich die besten Angebote und Schnäppchen im Internet. Täglich neue Deals aus allen Kategorien. Wir durchsuchen das Internet nach den besten Preisen und Rabatten, damit du garantiert kein Schnäppchen verpasst.

  • Wuah, C++ mit PHP oder Java vergleichen, BLASPHEMIE! ;)

    Aber mal im Ernst: Das kann man nicht so leicht übertragen. In C++ kannst du und sollst du und wirst du mit Pointern arbeiten. Also Zeiger auf einen bestimmten Speicherbereich. Das ist in PHP und Java unmöglich. Und ein Array ist ja - zumindest in C - nichts anderes als ein Zeiger auf eine Folge von Datenobjekten im Speicher. Die eckigen Klammern ([x]) stellen also eigentlich eine Zeigeroperation dar, nämlich den Zugriff auf das x-te Objekt im Speicherbereich dieses Arrays.

    Wie du jetzt mit deinem Arrayproblem umgehst, ist ganz vom Programmierkontext abhängig. Entweder du erstellst ein Array mit fester, ausreichend großer Anzahl an Objekten und ignorierst dann die nicht benötigten. Oder du füllst den gesamten Speicherbereich des Arrays vor jedem Gebrauch mit 0x00 (z.B. mit ZeroMemory(arrayname, sizeof(arrayname))). Eine weiter Möglichkeit wäre, das Array dynamisch zu allokieren und zu deallokieren.

    Beispiel:

    calloc(x,y) allokiert ganz einfach ein Array im Speicher mit x Feldern der Größe y und gibt einen Zeiger darauf zurück. Zuvor setzt es noch den gesamten Speicherbereich des Arrays auf 0x00. Der Aufruf von free() ist deshalb so wichtig, weil damit dieser Speicherbereich wieder freigegeben wird, d.h. das Betriebssystem weiß damit, dass es diesen Speicher wieder verwenden und evtl. an andere Programme vergeben darf. Macht man dies nicht, konsumiert dein Programm mit der Zeit immer mehr Speicher, und das wäre ja nicht der Sinn und Zweck der Sache.

    Na ja, vielleicht solltest du dich auch mal intensiv mit Zeigern beschäftigen, ich wüsste da ein paar gute Tutorials ;)

    HTH,
    reima

  • Hi,
    oh man, das ist mir zu hoch.
    Ich hab von Pointern leider wirklich noch keine grosse Ahnung. Deshalb habe ich jetzt einfach sämtliche Inhalte des Arrays mit folgendem überschrieben.

    Code
    theColorName[0] = _T(\"\");
    theColorName[1] = _T(\"\");
    theColorName[2] = _T(\"\");
    theColorName[3] = _T(\"\");
    theColorName[4] = _T(\"\");
    theColorName[5] = _T(\"\");
    theColorName[6] = _T(\"\");
    theColorName[7] = _T(\"\");


    Das ist zwar mit Sicherheit nicht die eleganteste Lösung, aber da mein Array nur diese bestimmte Grösse hat und es damit jetzt funktioniert werde ich es erstmal dabei belassen.

    Aber es wäre trotzdem nett wenn du mal ein paar Links für Tutorials hier posten könntest. Dann werde ich es mir bei Gelegenheit mal genauer anschauen.
    Thx