Ich habe ein Stück von C-Code und I nicht verstehen, wie die sizeof(...)
Funktion arbeitet:Größe des Zeichenfeldes und die Größe des Zeichenzeigers
#include <stdio.h>
int main(){
const char firstname[] = "bobby";
const char* lastname = "eraserhead";
printf("%lu\n", sizeof(firstname) + sizeof(lastname));
return 0;
}
In dem obigen Code sizeof (Vorname) 6 und sizeof (Nachname) ist 8.
Aber bobby
ist 5 Zeichen breit und eraserhead
ist 11 breit. Ich erwarte 16
.
Warum verhält sich sizeof für das Zeichenarray und den Zeiger auf das Zeichen anders?
Kann jemand klären?
Sowohl 'sizeof' als auch' strlen() 'geben ein Ergebnis vom Typ' size_t'. Verwenden Sie "% zu", nicht "% lu", um "size_t" -Werte zu drucken. Wenn der Compiler "% zu" nicht unterstützt, konvertieren Sie ihn in einen bekannten Typ und verwenden Sie das entsprechende Format für diesen Typ. –