Array[n] vs. Array[10]: Arrays mit variablem vs. numerischem Literal initialisieren
In C tritt beim Initialisieren eines ein Fehler auf Array mit einer Variablen als Größe, wie im folgenden Code zu sehen:
int n = 10; double tenorData[n] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Der Fehler ist: „variable-size Das Objekt „tenorData“ wurde möglicherweise nicht initialisiert.“ Dies liegt daran, dass Arrays variabler Größe in C nicht zulässig sind.
G erlaubt dieses Verhalten als Erweiterung, ist jedoch technisch nicht mit dem C-Standard kompatibel. Um dieses Problem zu beheben, kann man entweder Speicher dynamisch zuweisen oder Standardcontainer verwenden.
Dynamische Speicherzuweisung
int n = 10; double* a = new double[n];
Denken Sie daran, den zugewiesenen Speicher mit delete [] freizugeben. A; wenn fertig.
Standardcontainer
int n = 10; std::vector<double> a(n);
Konstante Arrays
Wenn ein geeignetes Array gewünscht wird, kann dies der Fall sein initialisiert mit einem konstanten Wert statt einer Variablen:
const int n = 10; double a[n];
In C 11 kann ein constexpr kann verwendet werden, wenn die Array-Größe aus einer Funktion ermittelt wird:
constexpr int n() { return 10; } double a[n()];
Das obige ist der detaillierte Inhalt vonWarum führt die Initialisierung eines C-Arrays mit einer variablen Größe zu einem Fehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!