Das ist keine Initialisierung, sondern eine Zuweisung.
Um ein Array zu initialisieren, ist folgende Schreibweise anzuwenden:
1 | int arr[3] = { 12, 34, 56 };
|
Um eine Struktur zu initialisieren, ist die gleiche Schreibweise
anzuwenden, die Werte müssen aber vom Typ her zum jeweiligen
Strukturelement passen:
1 | struct bla
|
2 | {
|
3 | int a;
|
4 | char b[20];
|
5 | float c;
|
6 | };
|
7 |
|
8 | struct bla x = { 2, "huhu", 1.234 };
|
Bei einem Array aus Strukturen sind beide Varianten zu kombinieren:
1 | struct bla
|
2 | {
|
3 | int a;
|
4 | char b[20];
|
5 | float c;
|
6 | };
|
7 |
|
8 | struct bla y[2] = { { 2, "huhu", 1.234 }, { 9, "ciao", 3.1415 } };
|
Bei einer Struktur, die ein Array enthält (anders als obiges, wo ich mir
mit der Stringkonstanten das Leben einfach gemacht habe), ist ebenfalls
eine Kombination aus beiden Varianten anzuwenden:
1 | struct bla
|
2 | {
|
3 | int a;
|
4 | uint8_t b[3];
|
5 | float c;
|
6 | };
|
7 |
|
8 | struct bla z = { 2, { 1, 2, 3 }, 1.234 };
|
Entscheidend ist aber: Das alles ist nur bei Initialisierungen
möglich, nicht aber bei Zuweisungen.