Heim > Backend-Entwicklung > C++ > Wie kann ich in Standard C ein Array mit variabler Größe deklarieren?

Wie kann ich in Standard C ein Array mit variabler Größe deklarieren?

Susan Sarandon
Freigeben: 2024-11-15 22:57:03
Original
605 Leute haben es durchsucht

How Can I Declare an Array With a Variable Size in Standard C?

Dynamische Array-Zuweisung in C mit variabler Array-Größe

Arrays variabler Größe, auch als dynamische Arrays bezeichnet, stellen in Standard C eine Herausforderung dar . Betrachten Sie das folgende Programm:

<br>int siz = 0;<br>int n = 0;<br>FILE* picture;</p>
<p>picture = fopen(" test.jpg", "r");<br>fseek(picture, 0, SEEK_END);<br>siz = ftell(picture);</p>
<p>char Sbuf[siz];<br>fseek(picture , 0, SEEK_SET); //Gehe zum Anfang der Datei<br>while (!feof(picture)) {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">n = fread(Sbuf, sizeof(char), siz, picture);
/* ... do stuff with the buffer ... */
/* memset(Sbuf, 0, sizeof(Sbuf)); */
Nach dem Login kopieren

}

Der obige Code versucht dies Ordnen Sie ein Array von Zeichen zu, dessen Größe durch eine Variable „siz“ bestimmt wird. In Standard-C müssen Array-Größen jedoch Konstanten sein. Dies wirft die Frage auf: Wie können wir siz korrekt deklarieren, um die Codekompilierung zu ermöglichen?

Leider gibt es in Standard-C keine direkte Methode, um ein Array mit einer variablen Größe zu deklarieren. Es gibt jedoch mehrere Alternativen:

  • std::vector: In modernem C kann der std::vector-Container als flexible Alternative zu Arrays verwendet werden. Es kann leicht auf jede gewünschte Größe erweitert werden und seine Verwendung ist relativ einfach.
  • Neuer Operator: Der neue Operator kann verwendet werden, um Speicher dynamisch auf dem Heap zuzuweisen. Um ein Array mit variabler Größe zu erstellen, kann man char* Sbuf = new char[siz]; um ein Array von Größenzeichen auf dem Heap zuzuweisen. Allerdings bringt dieser Ansatz Bedenken hinsichtlich der Speicherverwaltung mit sich (z. B. potenzielle Speicherlecks), sodass er weniger geeignet ist als std::vector.

Das obige ist der detaillierte Inhalt vonWie kann ich in Standard C ein Array mit variabler Größe deklarieren?. 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 Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage