Crash2001 Geschrieben 14. September 2002 Geschrieben 14. September 2002 Hi Ich meine man konnte irgendwie einer Konstanten den Wert einer Variablen übergeben, so dass man damit die Feldgrösse erst bei Initialisierung des Feldes mit dieser Konstanten festsetzen konnte. Weiss vielleicht jemand wie das geht, oder wie man das sonst machen könnte? Eine Variable als Feldgrösse geht ja leider nicht - wohl aber eine Konstante als Feldgrösse... Habe leider bisher nichts dazu gefunden. Zitieren
dOwNs3t Geschrieben 14. September 2002 Geschrieben 14. September 2002 Hi, Meines Wissens kannst du einer Konstanten keinen Wert einer Variablen zuweisen. ( Daher ja auch der Name Konstante ) Bei statischen Feldern kann die Feldgrösse nicht mit Variablen angegeben werden, deshalb solltest du in deinem Fall vielleicht ein dynamisches Feld allokieren ? z.B. int *Feld = new int[200] Der Speicher muss dann allerdings von Hand wieder freigegeben werden ( delete [] Feld ), bei einem Statischen Array wird das automatisch erledigt. Aber einer Konstanten einen Variablen Wert zu weisen geht definitiv nicht. mfg dOwNs3t. Zitieren
Crash2001 Geschrieben 14. September 2002 Autor Geschrieben 14. September 2002 Hi Also die Feldgrösse soll nur einmal festgelegt werden und danach auch nicht mehr verändert werden. Von daher sozusagen nur den Wert der variablen der aus ner Stringlänge kommt einmal übernehmen, damit das Feld nicht unnötig gross ist. Das müsste doch eigentlich gehen, oder? Zitieren
Klotzkopp Geschrieben 14. September 2002 Geschrieben 14. September 2002 Für die Größe eines Arrays musst Du eine Konstante oder ein numerisches Literal verwenden, also nichts, was Du zur Laufzeit noch verändern könntest. Wenn es Dir nur darum geht, den Speicher nicht wieder freigeben zu müssen, kannst Du alloca verwenden, also statt int array[ groesse ]; einfach das hier: int* array = (int*) alloca( groesse * sizeof( int ) ); Zitieren
Orffi Geschrieben 16. September 2002 Geschrieben 16. September 2002 Da ich alloca nicht kannte, mußte ich eben mal ein wenig suchen. Ich habe böserweise aus der Tatsache, daß ich es nicht kenne, geschlossen, daß es kein Standard sein kann. Leider ist es auch so und schon allein deswegen sollte man alloca nicht verwenden. Mein Entwicklungsumgebung hat allerdings noch einen Grund geliefert, warum man es nicht verwenden sollte: "Der Einsatz von alloca sollte, wenn möglich vermieden werden. Die Funktion sollte auf keinen Fall im try-Block eines C++ Programms verwendet werden. Wenn eine Exception ausgelöst wird, werden alle Werte, die von alloca auf dem Stack abgelegt werden, zerstört." Sehr unschön... Wenn man sich aber nicht um das ganze freigeben kümmern möchte hätte man immer noch das Konzept des auto_ptr's zur Verfügung. HTH Jan Zitieren
Klotzkopp Geschrieben 16. September 2002 Geschrieben 16. September 2002 Original geschrieben von Orffi Da ich alloca nicht kannte, mußte ich eben mal ein wenig suchen. Ich habe böserweise aus der Tatsache, daß ich es nicht kenne, geschlossen, daß es kein Standard sein kann. Leider ist es auch so und schon allein deswegen sollte man alloca nicht verwenden.Danke für den Hinweis. Wie finde ich eigentlich heraus, ob etwas Teil des Standards ist? Wenn eine Exception ausgelöst wird, werden alle Werte, die von alloca auf dem Stack abgelegt werden, zerstört."Passiert das nicht mit allen Variablen auf dem Stack? Zitieren
Orffi Geschrieben 16. September 2002 Geschrieben 16. September 2002 Danke für den Hinweis. Wie finde ich eigentlich heraus, ob etwas Teil des Standards ist? Gibt verschiedene Möglichkeiten. Ich gehe zuerst nach meinem Gefühl. Wenn ich glaube, daß es nicht Standard ist gehe ich auf die Suche. Zur schnellen Suche schaue ich in der Borland Hilfe nach, dort gibt es ein Link, der anzeigt, ob die Funktion zum Beispiel ANSI C, ISO C++ oder windowsspezifisch ist. Aber da ich auch Borland nicht besonders traue, habe ich mir den C++-Standard gekauft. Dort schaue ich hauptsächlich nach. Den Standard kann man als PDF-Datei kaufen (18 US-D). Der Preis ist in Ordnung, wenn man es allerdings als Buch haben möchte, hört der Spaß auf, das ist zu teuer. Kostenlos gibt es den C++ Draft: ftp://ftp.research.att.com/dist/c++std/WP/CD2 Sonst vertaue ich noch dem Buch von Stroustrup. Passiert das nicht mit allen Variablen auf dem Stack? Ich denke schon. HTH Jan 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.