Gast
#794847
Hi, wie kann ich wenn ich ein Array initialisiere allen Elementen einen Wert zuweisen z.B. 0
|
Anzeige
|
Arrayy Initialisieren
Gast
#794847
Hi, wie kann ich wenn ich ein Array initialisiere allen Elementen einen Wert zuweisen z.B. 0
Gast
#794860
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?
Gast
#794874
for(i=0; i<100; i++) array[i]=0;
Gast
#794876
so:
int array[100];
for (i=0;i<100;i++)
{array[i]=0;
}
Global definierte Arrays sind nach dem anlegen bereits mit 0
initialisiert
Gast
#794877
ja ich wollts halt nur gern vorher machen also nicht erst wärend der laufzeit...
Gast
#794883
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.)
Gast
#795064
@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
Gast
#795146
> 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.
Gast
#796168
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
Gast
#796342
> 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. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|