Hi, wie kann ich wenn ich ein Array initialisiere allen Elementen einen Wert zuweisen z.B. 0
also wenn ich ein array habe: int array[100] = {0,0,0,0,...,0} also muss ich da 100 0en schreiben oder geht das auch kürzer?
so: int array[100]; for (i=0;i<100;i++) {array[i]=0; } Global definierte Arrays sind nach dem anlegen bereits mit 0 initialisiert
ja ich wollts halt nur gern vorher machen also nicht erst wärend der laufzeit...
static int feld[100]; Statische Variable werden mit 0 initialisiert. Gruß Fritz
Oder falls es eine lokale Variable ist: int a[100] = {0}; // oder sogar, wenn man tippfaul ist int a[100] = {}; Das funktioniert, weil nicht-initialisierte Array-Eintraege automatisch mit 0 initialisiert werden, sofern in der Deklaration irgendeine Initialisierung angegeben ist. Bei int a[100]; werden die Eintraege also nicht mit 0 intialisiert.
Nur, weil's noch keiner geschrieben hat: memset() kann auch helfen. (Was anderes macht der Compiler auch nicht.)
@Christoph stimmt, wird aber zur laufzeit gemacht static int wird dafür executable aufblähen ich würde diesen tradeoff klar für runtime entscheiden grüsse, daniel
> stimmt, wird aber zur laufzeit gemacht > static int wird dafür executable aufblähen Nein, das wird auch zur Laufzeit gemacht. Statische Variablen, die nicht oder mit 0 initialisiert werden, landen im Segment .BSS, das vom Startup-Code vor main() "ausgenullt" wird.
man lernt nie aus^^ allerdings wenn ich richtig weiss reden wir "wie es gcc" macht ich glaub kaum, dass C stdandard je soweit gehen würde über segmente zu reden. (oder auch stack) schöne grüsse, daniel
> allerdings wenn ich richtig weiss reden wir "wie es gcc" macht Naja, wir sind in einem GCC-Forum. > ich glaub kaum, dass C stdandard je soweit gehen würde über > segmente zu reden. (oder auch stack) Dann glaubst du richtig. Wie die Null-Initialisierung durchgeführt wird, bleibt natürlich voll und ganz dem Compiler überlassen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.