2016-12-04 2 views
0

Lets sagen, dass die Struktur definiert ist als generieren.automatisch struct Instanzen

Ich möchte kein Array in struct machen, sondern eine separate Instanz für jedes Auto. Ich kann nicht verstehen, was das Protokoll ist, um Instanzen automatisch zu erzeugen.

car1,car2,car3......,car n 

Ich dachte, ich würde eine Schleife laufen, aber ich kann nicht verstehen, wie neue Instanz Namen jedes Mal erklären:

#some loop 
struct car instance_name #how to replace instance_name with actual names? 
+9

einen Array von Strukturen machen. Sie können zur Laufzeit keine Variablennamen erstellen. – melpomene

+0

@melpomene Löscht viel. Vielen Dank. –

Antwort

-2

Wenn Sie nicht im Voraus wissen können, wie viele Autos Fälle müssen Sie eine Eine praktische Lösung ist die Verwendung von malloc, um mehr Arbeitsspeicher im laufenden Betrieb zu reservieren.

carArray = (struct car**) malloc(numberOfCars*sizeOf(struct car)); 

for (int i =0; i < numberOfCars; i++) 
    carArray[i] = (struct car*) malloc (sizeof(struct car)); 

Ein hilfreiches Beispiel Artikel here

Ein Benutzer mit einer ähnlichen Frage here

+2

Nicht 'malloc()'. Und in diesem Fall ist entweder Ihre Besetzung oder Ihr 'sizeof' Ausdruck falsch. (Warum sollte man ohnehin eine 2-Level-Struktur verwenden?) – melpomene

+4

Besser: 'struct car * cars; ... Autos = malloc (Anzahl * Größe * Autos); ... Autos [i] .registration_number = 42; ' – melpomene

Verwandte Themen