Array definieren und zuweisen

Gast #1391407
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.
#1391420
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.
Gast #1392249
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);

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