Forum: Compiler & IDEs Array definieren und zuweisen


von Michel (Gast)


Lesenswert?

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.

von (prx) A. K. (prx)


Lesenswert?

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.

von Sandra (Gast)


Lesenswert?

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

von yalu (Gast)


Lesenswert?

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