SpecialAgentUwe Geschrieben 10. September 2010 Geschrieben 10. September 2010 Hallo, ich habe folgendes Problem. Ich brauche in meinem programm ein globales Array vom eigenen Typ Stopword. Jedoch weiß ich die Länge erst, wenn das Programm eine SQL-Abfrage gemacht hat. Gibt es eine Möglichkeit die Länge des Arrays dann erst neu anzugeben? Gruß Zitieren
Klotzkopp Geschrieben 10. September 2010 Geschrieben 10. September 2010 Du kannst die Größe von Arrays nicht ändern. In C kannst du den Speicher, wenn du ihn dynamisch (mit malloc) reserviert hast, mit realloc vergrößern. In C++ würde man in so einem Fall gar kein Array verwenden, sondern eine der Containerklassen der Standardbibliothek, wie std::vector. Globale Variablen braucht man übrigens äußerst selten, und meistens sind sie ein Zeichen von schlechtem Stil. Zitieren
SpecialAgentUwe Geschrieben 10. September 2010 Autor Geschrieben 10. September 2010 Hehe...Das würde ich nicht abstreiten, aber besser krieg ich's nicht hin. Ich werd's mal mit realloc versuchen. Danke Zitieren
lilith2k3 Geschrieben 10. September 2010 Geschrieben 10. September 2010 Ich behaupte mal, dass Du evtl. nicht weißt, was Du brauchst Vielleicht ist eine Liste ja auch das, was Du benötigst. Und vielleicht brauchst Du auch kein globales Array, sondern nur einen Speicherblock mit Zeiger dran zum draufzeigen und rundreichen ... oder oder oder ... vielleicht solltest Du das Problem nochmal überdenken, dann löst sich Deine Frage in wohlgefallen auf. Zitieren
Gateway_man Geschrieben 11. September 2010 Geschrieben 11. September 2010 Du könntest dir zur not auch noch ne Funktion schreiben, welche die Arraygröße verändert. Funktioniert natürlich nur solange du das Array vergrößern willst . Hier ein kleines Beispiel für ein Array vom Typ Integer: int* renew (int* old, int sizeold, int sizenew) { int* tmp = new int[sizenew]; if (sizeold < sizenew) { for (int i=0;i<sizeold;i++) { tmp[i] = old[i] } delete [] old; } return tmp; } lg Gateway Zitieren
Klotzkopp Geschrieben 11. September 2010 Geschrieben 11. September 2010 int* tmp = new int[sizenew]; Ich vermute, er benutzt C, also nix mit new . Mit C++ würde ich davon abraten, mit rohen Zeigern zu hantieren. Zitieren
Gateway_man Geschrieben 11. September 2010 Geschrieben 11. September 2010 Ich vermute, er benutzt C, also nix mit new . Das stimmt. Er hatte die Sprache nicht explizieht angegeben, darum hab ichs einfach mal erwähnt . Zitieren
SpecialAgentUwe Geschrieben 14. September 2010 Autor Geschrieben 14. September 2010 Ok...hab mir jetzt ne liste geschrieben und übergebe die einfach an die entsprechenden Funktionen. Ist natürlich wirklich etwas eleganter...danke für die Tipps. Gruß Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.