Heim > Backend-Entwicklung > C++ > Warum führt die Initialisierung eines C-Arrays mit einer variablen Größe zu einem Fehler?

Warum führt die Initialisierung eines C-Arrays mit einer variablen Größe zu einem Fehler?

Susan Sarandon
Freigeben: 2024-12-19 08:53:09
Original
785 Leute haben es durchsucht

Why Does Initializing a C   Array with a Variable Size Result in an Error?

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};
Nach dem Login kopieren

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];
Nach dem Login kopieren

Denken Sie daran, den zugewiesenen Speicher mit delete [] freizugeben. A; wenn fertig.

Standardcontainer

int n = 10;
std::vector<double> a(n);
Nach dem Login kopieren

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];
Nach dem Login kopieren

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()];
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage