Hallo Leute, kurze einfache Anfängerfrage. Hab überall gesucht aber seltsamerweise keine Antwort gefunden. Ich habe ein Array definiert. int array[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; Dem möchte ich im laufenden Programm andere Werte zuweisen und zwar in der Form: array = {0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00}; oder array[] = {0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00}; Geht aber beides nicht. Der Compiler meckert. Wie lautet die korrekte Syntax dazu ? Ein indiziertes Ansprechen möchte ich nicht. Ist in meinem Fall unpraktisch. Danke schon mal im voraus.
Michel schrieb: > Wie lautet die korrekte Syntax dazu ? array[0] = 0xFF; array[1] = 0x00; ... oder const int array2[] = {0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00}; ... memcpy(array, array2, sizeof array); > Ist in meinem Fall unpraktisch. C ist nun einmal eine skalare Sprache. Das kann gelegentlich unpraktisch sein.
Hi Michel die Schreibweise array[] ist das gleiche * array in Deinem Fall ein Zeiger auf int. Wenn Du alles in einer Anweisung zuweisen willst, schau mal nach memcpy(...) Gruss Sandra
Der C99-Standard erlaubt auch folgende Schreibweise:
1 | memcpy(array, (int[]){0xFF,0x00,0xFF,0x00,0x00,0x00,0x00}, sizeof array); |
Wenn das häufig vorkommt, kann man den etwas komplizierten Ausdruck auch in ein Makro packen:
1 | #define ASSIGN_INT_ARRAY(a, ...) memcpy(a, (int[]){__VA_ARGS__}, sizeof a)
|
2 | |
3 | ASSIGN_INT_ARRAY(array, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00); |
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.