Alois Neumann schrieb:
> Deine Version funktioniert. Das mit den Pointern hatte ich auch schon
> probiert.
Die Version von user ist ebenso korrekt.
Alois Neumann schrieb:
> Was ich immer noch nicht verstehe. tempID[8] ist doch 8Bytes gross,
> oder?
> Werden jetzt mit memcpy nur 8 Bytes kopiert, oder 64Bytes?
tempID[8] kann zweierlei sein...
1.
1 | unsigned char tempID[8];
|
definiert ein Feld mit 8 Elementen.
2.
Nachdem das Feld schon existiert, ist tempID[8] ein Element, nämlich das
achte nach Feldbeginn (und damit das erste hinter dem Feld):
1 | tempID[8] = 42; // falsch, da hinter Feld!
|
Hier ist ein Element des Feldes gemeint, wenn auch ein verbotenes, da
nur [0] bis [7] im Feld liegen.
sizeof(tempID[8]) ist die Größe eines solchen Elements, also 1 (weil ein
Feldelement vom Typ unsigned char ist und damit 1 Byte groß).
Bei sizeof ist es nicht schädlich, wenn man ein Element außerhalb des
Feldes angibt statt innnerhalb. Schließlich geht es nur um die Größe
eines Objekts im Speichers, also um seinen Typ. Wirklich darauf
zugegriffen wird bei sizeof nicht.
Also: sizeof(tempID[8]) ist hier 1, sizeof(tempID) und
8*sizeof(tempID[8]) wären 8.