Qualcuno sa il perchè ? Sono entrambe puntatori ...
edit:
L' ho appena capito: se dichiaro:
La locazione di memoria di s1 è statica e non può cambiare, non posso allocarci memoria o cambiare la sua locazione:codice:char s1[]="ciao"; char *s2=s1;
Mentre s2 è un puntatore non un array, e come tale è dinamico.codice:s1=(char*)malloc(10*sizeof(char)); // errore
Per cui la dimensione di s1 è decisa a compile-time, ecco perchè sizeof ritorna la sua dimensione esatta.
Invece la dimensione di s2 è variabile, la sua locazione di memoria può cambiare, per cui sizeof ritorna semplicemente la dimensione del puntatore, non potrebbe ritornare la lunghezza della stringa.


Rispondi quotando