c++ initialisiert array mit den deklarierten Größe als Wert eine ganze Zahl
Möchte ich initialisieren Sie ein array mit einer Größe mit einem Wert lese ich in einer integer-variable.
Ich kann nicht scheinen zu verstehen, warum es funktioniert in Dev-C++ aber nicht in Turbo C++. Hier der code, um zu helfen, die Dinge klarzustellen,
int arr_size; //cin max value for lets say number of students or something...
cin >> arr_size;
int array[arr_size]; //declares array with size (assume 10 or 100) with range 0 to 9 or 0-99
Der compiler zeigt einen Fehler in Turbo C++ (wirklich alt, ich weiß, aber meine Schule es nutzt leider). Dev-C++ und codeblocks nicht.
Warum ist das so? Ich weiß, das ist schlechte Praxis", wie Sie es definieren, in einige Bücher" eine array-Größe die gleiche wie ein int-Wert, aber gibt es eine Arbeit um für dieses in Turbo C++?
Ich möchte wissen, warum der Fehler passiert und wie bekomme ich eine Arbeit um Sie ... vielen Dank!
- mögliche Duplikate von Dynamisches array im Stack ?
- Dachte immer, variable length arrays sind nicht erlaubt in der standard-c++. Sie können es in C. Siehe en.wikipedia.org/wiki/Variable-length_array
Du musst angemeldet sein, um einen Kommentar abzugeben.
Array mit variabler Länge sind nicht erlaubt in der standard-c++. Sie können es in C99. Erwägen Sie die Verwendung von C++ std::vector als :
Und Sie können index es genau wie das array, wenn Sie zu haben.
Den C++ - standard erlaubt nur arrays der Größe mit einem konstanter Ausdruck. (Jedoch, einige Compiler bieten kann es als ein nicht-standard-Sprache-Erweiterung.)
Könnte man eine
std::vector
statt:Oder Sie könnte dynamisch-Speicher manuell:
Die Problemumgehung ist, um dynamisch zuweisen, das array, so dass Sie sicher, um den Speicher zu löschen, wenn Sie fertig.
Du willst variable Länge array (VLA), was nicht erlaubt in C++. Ihr erlaubt, in C99.
Verwenden
std::vector<int>
statt, wie: