Feld initialisieren

#753305
Lesenswert?

Steff wrote:
> Gibt es eine Möglichkeit ein 10*10 Feld mit Buchstaben zu
> initialisieren??ohne for und ohne komplette Eingabe?
Naja, irgendwo her muss der Speicher ja wissen, was er enthalten soll, 
und das muss ihm der Programmierer mitteilen. Und das, was Du da 
schreibst, sind im Prinzip genau die beiden Möglichkeiten, die der 
Programmierer hat, das zu tun.

> zb:   char c[10][10] ='A'
Alle Feldelemente sollen den gleichen Wert enthalten? Tja, ist zwar ein 
Sonderfall, aber leider gibt's auch da keine Ausnahme vom oben gesagten.

EDIT:
Thomas' Link zeigt, wie man es macht, wenn nicht alle Feldelemente 
initialisiert werden sollen. Aber wenn alle Elemente einen Wert != 0 
haben sollen, musst Du es auf die Ochsentour machen...
#753349
Lesenswert?

Johannes M. wrote:
> EDIT:
> Thomas' Link zeigt, wie man es macht, wenn nicht alle Feldelemente
> initialisiert werden sollen. Aber wenn alle Elemente einen Wert != 0
> haben sollen, musst Du es auf die Ochsentour machen...

Hm?
1
   static int month_days[2][12] =
2
   {
3
    { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
4
    { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
5
   };

Hier werden alle Feldelemente an der Deklarationstelle mit nem festen 
wert beschrieben.
Es gibt halt keine schöne Möglichkeit, alles mit dem gleichen Wert 
vorzubelegen.
Reden wir einander vorbei?
#753411
Lesenswert?

Thomas B. wrote:
> Hier werden alle Feldelemente an der Deklarationstelle mit nem festen
> wert beschrieben.
> Es gibt halt keine schöne Möglichkeit, alles mit dem gleichen Wert
> vorzubelegen.
> Reden wir einander vorbei?
Möglich. Das oben ist ja eine der beiden möglichen Ochsentouren. Und 
auch, wenn die Initialisierungswerte der Feldelemente alle gleich sein 
sollen (nur eben nicht 0), muss er trotzdem entweder alle einzeln 
angeben (wie in Deinem Beispiel, nur dass dann überall z.B. 'A' stünde) 
oder das Feld zur Programmlaufzeit füllen. Und das sind genau die 
beiden Methoden, die er nicht will. Aber da führt leider kein Weg dran 
vorbei...
Gast #753441
Lesenswert?

Mir fällt bei diesem Anwendungsbeispiel bei genauerer Betrachtung kein
einziges Argument für eine statische Initialisierung (mit {'A', 'A',
... } o.ä.) ein, dafür gibt gleich mehrere Argumente für die
Initialisierung zur Laufzeit (mit Schleife oder memset). Letztere hat
Speicher- und Geschwindigkeitsvorteile sowohl auf einen µC als auch
auf einem PC als Zielsystem. JohoS hat schon das wichtigste Argument
genannt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren