Ho un pezzo di codice C e non capire come funziona la funzione sizeof(...)
:dimensione della matrice e la dimensione del puntatore carattere carattere
#include <stdio.h>
int main(){
const char firstname[] = "bobby";
const char* lastname = "eraserhead";
printf("%lu\n", sizeof(firstname) + sizeof(lastname));
return 0;
}
Nella suddetta codice sizeof (nome) è 6 e sizeof (cognome) è 8.
Ma bobby
è largo 5 caratteri e eraserhead
è largo 11. Mi aspetto 16
.
Perché la dimensione del comportamento si comporta in modo diverso per l'array di caratteri e il puntatore al carattere?
Qualcuno può chiarire?
Sia 'sizeof' che' strlen() 'danno un risultato di tipo' size_t'. Usa '% zu', non'% lu' per stampare i valori di 'size_t'. Oppure, se il tuo compilatore non supporta '% zu', converti in un tipo noto e usa il formato appropriato per quel tipo. –