static-Array initialisieren
-
Hallo,
Ich möchte ein static-Array bei der Deklaration initialisieren.
Ich habe aus einer anderen Datei ein define, was die Länge angibt:
#define length 10
Nun möchte ich ein Array erstellen und es initialisieren:
static int array[length] = ...
Es soll nicht zwingend auf 0 gesetzt werden, sondern auf einen beliebigen Wert, und alle Elemente sollen den gleichen Wert bekommen.
Ich habe schon einiges probiert, memset funktioniert nicht bei statischen Variablen und ist ungültig. Ich habe auch versucht, ein Makro zu erstellen, welches mir eine Initialisierungsliste baut, aber ich bekomm es nur rekursiv hin und das ist auch ungültig.Kann mir jemand helfen?
Danke, Fabian
-
static int array[length] = { 0 } ;
-
Ok, vielen Dank!
Ist das ANSI-C konform?
Das funktioniert wohl auch mit anderen Typen und anderen Werten bei der Initialisierung.
-
Ja, das ist Standard C. Damit werden aber alle Elemente des Arrays mit
0
initialisiert, die Du nicht angibst. Somit eigentlich keine Lösung für "allen Elementen bestimmten Wert außer 0 zuweisen".cheers, Swordfish
-
Danke für die Erklärung.
Ich hatte es auch so in Erinnerung, dass die Initialisierung mit {Wert} nur das erste Feld des Arrays mit "Wert" belegt, der Rest wird mit 0 initialisiert.
Deshalb hatte ich diese Lösung schon verworfen, habe aber jetzt in meinem Projekt gesehen, dass sowieso immer mit 0 initialisiert wird, also ist die Lösung ok.
-
fep2k schrieb:
habe aber jetzt in meinem Projekt gesehen, dass sowieso immer mit 0 initialisiert wird...
das ist bei static und globalen arrays (und auch einzelnen variablen) immer so. wenn man sie nicht initialisiert, werden sie automatisch auf 0 gesetzt.