Rolf B: C mal wieder, Länge einer Binary

Beitrag lesen

Hallo TS,

{ 0,0,0,0 } und { '0','0','0','0'') sind verschiedene Dinge. Die dezimale Entsprechung des zweiten Initializers wäre { 48,48,48,48 }.

strlen darf man nicht auf den Datentyp char anwenden. Aber das tust Du ja nicht. Du wendest ihn auf char[] an, was zur Laufzeit identisch zu char* ist. Der Unterschied besteht zur Compilezeit:

char x[100];
char* y;

printf("%d %d", sizeof(x), sizeof(y));

Die Ausgabe ist 100 4 (auf einem 32-bit System) oder 100 8 (auf einem System mit 64-bit Pointern). Vielleicht auch 200 8 oder 400 8, wenn das System für Unicode Zeichen ausgelegt ist; ich weiß aber nicht ob es das gibt. Typischerweise verwendet man dann wchar_t, das von den beim Compiler mitgeieferten includes (wchar.h) per typedef konstruiert wird. Der Online C Compiler von tutorialspoint.com hat sizeof(wchar_t) == 4.

Rolf

--
sumpsi - posui - clusi