Gibt es eine Möglichkeit ein 10*10 Feld mit Buchstaben zu initialisieren??ohne for und ohne komplette Eingabe? zb: char c[10][10] ='A' Bin zwar kein Anfänger mehr aber fällt momentan nichts dazu ein im voraus Danke
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...
Statisch geht es in C (darum geht es doch?) m.W. nicht. Zur Laufzeit mit memset, was aber intern eine Schleife enthält.
beim µC ist die for Schleife sicher die bessere Lösung. Wenn man alle Felder per Konstanten vorgibt werden die ins Flash gelegt und beim Programmstart von der C-Runtime umkopiert.
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?
Muste mal gucken ob die C-Library memcpy(3), bcopy(3), ... und Konsorten bereitstellt.
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...
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.
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.