Forum: Compiler & IDEs Arrayy Initialisieren


von Peter (Gast)


Lesenswert?

Hi,
wie kann ich wenn ich ein Array initialisiere allen Elementen einen Wert 
zuweisen z.B. 0

von Peter (Gast)


Lesenswert?

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?

von holger (Gast)


Lesenswert?

for(i=0; i<100; i++) array[i]=0;

von Horst (Gast)


Lesenswert?

so:

int array[100];
for (i=0;i<100;i++)
{array[i]=0;
}

Global definierte Arrays sind nach dem anlegen bereits mit 0 
initialisiert

von Peter (Gast)


Lesenswert?

ja ich wollts halt nur gern vorher machen also nicht erst wärend der 
laufzeit...

von Fritz (Gast)


Lesenswert?

static int feld[100];

Statische Variable werden mit 0 initialisiert.

Gruß
Fritz

von Christoph _. (chris)


Lesenswert?

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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Nur, weil's noch keiner geschrieben hat: memset() kann auch helfen.
(Was anderes macht der Compiler auch nicht.)

von daniel (Gast)


Lesenswert?

@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

von Rolf Magnus (Gast)


Lesenswert?

> 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.

von daniel (Gast)


Lesenswert?

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

von Rolf Magnus (Gast)


Lesenswert?

> 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
Noch kein Account? Hier anmelden.