Wie deklariere ich die Größe eines Arrays zur Laufzeit in C?

8

Ich möchte im Grunde das C von Äquivalent (gut, nur der Teil mit dem Array, ich brauche nicht die Klasse und String-Parsing und all das):

%Vor%

Entschuldige meine Unwissenheit. Ich wurde von Java verdorben;)

    
Paul Wicks 15.03.2009, 20:56
quelle

5 Antworten

11
%Vor%

Vorbehalt: Aus der Hand, ohne Fehler zu überprüfen.

    
dirkgently 15.03.2009, 20:58
quelle
5

In C können Sie das tun, wenn Sie die Fehlerprüfung ignorieren:

%Vor%

Wenn Sie keine globale Variable möchten und Sie C99 verwenden, könnten Sie Folgendes tun:

%Vor%

Dies verwendet ein VLA - Array variabler Länge.

    
Jonathan Leffler 15.03.2009 20:59
quelle
2

Wenn Sie die Daten initialisieren müssen, können Sie Calloc:

verwenden %Vor%

Auf diese Weise wird der zugewiesene Speicher mit Nullen initialisiert, was nützlich sein kann. Beachten Sie, dass Sie einen beliebigen Datentyp anstelle von int.

verwenden können     
mirz 15.03.2009 22:58
quelle
1

Leider sind viele der Antworten auf diese Frage, einschließlich der akzeptierten, korrekt , aber nicht äquivalent zu dem Code-Snippet des OP . Denken Sie daran, dass operator new[] den Standardkonstruktor für jedes Array-Element aufruft. Für POD-Typen wie int , die keinen Konstruktor haben, werden sie standardmäßig initialisiert (lies: null-initialisiert, siehe §8.5 ¶5-7 von Der C ++ Standard ).

Ich habe gerade malloc (nicht initialisierten Speicher zuweisen) für calloc (Nullspeicher löschen) getauscht, so dass das Äquivalent zu dem angegebenen C ++ - Snippet

wäre %Vor%

Tut mir leid, dass ich diese alte Frage wiederbelebt habe, aber es fühlte sich einfach nicht an, ohne einen Kommentar zu gehen (für den ich nicht die erforderliche Repräsentierung habe) ;-)

    
Jan 22.10.2014 11:09
quelle
0
%Vor%     
Chuck 15.03.2009 21:00
quelle

Tags und Links