Mam kawałek kodu C, a ja nie rozumiem, jak działa funkcja sizeof(...)
:wielkość tablicy znaków i wielkości wskaźnika znaków
#include <stdio.h>
int main(){
const char firstname[] = "bobby";
const char* lastname = "eraserhead";
printf("%lu\n", sizeof(firstname) + sizeof(lastname));
return 0;
}
W sizeof powyższy kod (imię) jest 6 i sizeof (nazwisko) to 8.
Ale bobby
ma szerokość 5 znaków, a eraserhead
ma 11 szerokości. Spodziewam się 16
.
Dlaczego sizeof zachowuje się inaczej dla tablicy znaków i wskaźnika dla postaci?
Czy ktoś może wyjaśnić?
Zarówno 'sizeof' jak i' strlen() 'dają wynik typu' size_t'. Użyj '% zu', a nie'% lu', aby wydrukować wartości 'size_t'. Lub, jeśli Twój kompilator nie obsługuje '% zu', przekonwertuj na znany typ i użyj odpowiedniego formatu dla tego typu. –